微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Webdav PROPFIND,Curl或Postman没有响应

如何解决Webdav PROPFIND,Curl或Postman没有响应

我有一个运行在本地网络上的webdav服务器,我能够获得其他请求的响应,但是PROPFIND使得Curl和Postman都挂起而没有返回任何内容,尽管我看到响应成功(207多状态), Wireshark。我怀疑与网络适配器或分块编码有关,但确实可以在此方面使用您的帮助!使用Mac / Catalina和以下行:

curl --location --request PROPFIND 'http://192.168.1.102/DATALOG' \
--header 'Content-Type: text/xml' \
--header 'Depth:  1' \
--header 'Accept:  */*' \
--data-raw '<?xml version="1.0" encoding="utf-8"?><D:propfind xmlns:D="DAV:"><D:prop><D:getlastmodified/><D:getcontentlength/><D:creationdate/><D:resourcetype/></D:prop></D:propfind>'

编辑: 这是一个示例响应,对我来说,似乎所有cr / lf都已到位,但我确实抱怨httpolice中缺少cr。

00000000  48 54 54 50 2f 31 2e 31  20 32 30 37 20 4d 75 6c   HTTP/1.1  207 Mul
00000010  74 69 2d 53 74 61 74 75  73 0d 0a 53 65 72 76 65   ti-Statu s..Serve
00000020  72 3a 20 58 63 65 72 65  62 65 6c 6c 75 6d 2f 31   r: Xcere bellum/1
00000030  2e 30 0d 0a 43 6f 6e 6e  65 63 74 69 6f 6e 3a 20   .0..Conn ection: 
00000040  63 6c 6f 73 65 0d 0a 43  6f 6e 74 65 6e 74 2d 54   close..C ontent-T
00000050  79 70 65 3a 20 74 65 78  74 2f 78 6d 6c 0d 0a 4c   ype: tex t/xml..L
00000060  6f 63 61 74 69 6f 6e 3a  20 68 74 74 70 3a 2f 2f   ocation:  http://
00000070  31 39 32 2e 31 36 38 2e  31 2e 31 30 32 2f 44 43   192.168. 1.102/DC
00000080  49 4d 2f 0d 0a 54 72 61  6e 73 66 65 72 2d 45 6e   IM/..Tra nsfer-En
00000090  63 6f 64 69 6e 67 3a 20  63 68 75 6e 6b 65 64 0d   coding:  chunked.
000000A0  0a 0d 0a                                           ...
000000A3  3c 3f 78 6d 6c 20 76 65  72 73 69 6f 6e 3d 27 31   <?xml ve rsion='1
000000B3  2e 30 27 20 65 6e 63 6f  64 69 6e 67 3d 27 75 74   .0' enco ding='ut
000000C3  66 2d 38 27 3f 3e 3c 44  3a 6d 75 6c 74 69 73 74   f-8'?><D :multist
000000D3  61 74 75 73 20 78 6d 6c  6e 73 3a 62 3d 27 75 72   atus xml ns:b='ur
000000E3  6e 3a 75 75 69 64 3a 63  32 66 34 31 30 31 30 2d   n:uuid:c 2f41010-
000000F3  36 35 62 33 2d 31 31 64  31 2d 61 32 39 66 2d 30   65b3-11d 1-a29f-0
00000103  30 61 61 30 30 63 31 34  38 38 32 2f 27 20 78 6d   0aa00c14 882/' xm
00000113  6c 6e 73 3a 63 3d 27 78  6d 6c 3a 27 20 78 6d 6c   lns:c='x ml:' xml
00000123  6e 73 3a 44 3d 27 44 41  56 3a 27 3e 3c 44 3a 72   ns:D='DA V:'><D:r
00000133  65 73 70 6f 6e 73 65 3e  3c 44 3a 68 72 65 66 3e   esponse> <D:href>
00000143  68 74 74 70 3a 2f 2f 31  39 32 2e 31 36 38 2e 31   http://1 92.168.1
00000153  2e 31 30 32 2f 44 43 49  4d 2f 3c 2f 44 3a 68 72   .102/DCI M/</D:hr
00000163  65 66 3e 3c 44 3a 70 72  6f 70 73 74 61 74 3e 3c   ef><D:pr opstat><
00000173  44 3a 70 72 6f 70 3e 3c  44 3a 72 65 73 6f 75 72   D:prop>< D:resour
00000183  63 65 74 79 70 65 3e 3c  44 3a 63 6f 6c 6c 65 63   cetype>< D:collec
00000193  74 69 6f 6e 2f 3e 3c 2f  44 3a 72 65 73 6f 75 72   tion/></ D:resour
000001A3  63 65 74 79 70 65 3e 3c  44 3a 67 65 74 63 6f 6e   cetype>< D:getcon
000001B3  74 65 6e 74 6c 65 6e 67  74 68 3e 30 3c 2f 44 3a   tentleng th>0</D:
000001C3  67 65 74 63 6f 6e 74 65  6e 74 6c 65 6e 67 74 68   getconte ntlength
000001D3  3e 3c 44 3a 69 73 72 65  61 64 6f 6e 6c 79 3e 30   ><D:isre adonly>0
000001E3  3c 2f 44 3a 69 73 72 65  61 64 6f 6e 6c 79 3e 3c   </D:isre adonly><
000001F3  2f 44 3a 70 72 6f 70 3e  3c 44 3a 73 74 61 74 75   /D:prop> <D:statu
00000203  73 3e 48 54 54 50 2f 31  2e 31 20 32 30 30 20 4f   s>HTTP/1 .1 200 O
00000213  4b 3c 2f 44 3a 73 74 61  74 75 73 3e 3c 2f 44 3a   K</D:sta tus></D:
00000223  70 72 6f 70 73 74 61 74  3e 3c 44 3a 70 72 6f 70   propstat ><D:prop
00000233  73 74 61 74 3e 3c 44 3a  70 72 6f 70 3e 3c 44 3a   stat><D: prop><D:
00000243  63 72 65 61 74 69 6f 6e  64 61 74 65 2f 3e 3c 44   creation date/><D
00000253  3a 67 65 74 6c 61 73 74  6d 6f 64 69 66 69 65 64   :getlast modified
00000263  2f 3e 3c 2f 44 3a 70 72  6f 70 3e 3c 44 3a 73 74   /></D:pr op><D:st
00000273  61 74 75 73 3e 48 54 54  50 2f 31 2e 31 20 34 30   atus>HTT P/1.1 40
00000283  34 20 4e 6f 74 20 46 6f  75 6e 64 3c 2f 44 3a 73   4 Not Fo und</D:s
00000293  74 61 74 75 73 3e 3c 2f  44 3a 70 72 6f 70 73 74   tatus></ D:propst
000002A3  61 74 3e 3c 2f 44 3a 72  65 73 70 6f 6e 73 65 3e   at></D:r esponse>
000002B3  3c 44 3a 72 65 73 70 6f  6e 73 65 3e 3c 44 3a 68   <D:respo nse><D:h
000002C3  72 65 66 3e 68 74 74 70  3a 2f 2f 31 39 32 2e 31   ref>http ://192.1
000002D3  36 38 2e 31 2e 31 30 32  2f 44 43 49 4d 2f 31 30   68.1.102 /DCIM/10
000002E3  30 5f 5f 54 53 42 2f 3c  2f 44 3a 68 72 65 66 3e   0__TSB/< /D:href>
000002F3  3c 44 3a 70 72 6f 70 73  74 61 74 3e 3c 44 3a 70   <D:props tat><D:p
00000303  72 6f 70 3e 3c 44 3a 72  65 73 6f 75 72 63 65 74   rop><D:r esourcet
00000313  79 70 65 3e 3c 44 3a 63  6f 6c 6c 65 63 74 69 6f   ype><D:c ollectio
00000323  6e 2f 3e 3c 2f 44 3a 72  65 73 6f 75 72 63 65 74   n/></D:r esourcet
00000333  79 70 65 3e 3c 44 3a 67  65 74 63 6f 6e 74 65 6e   ype><D:g etconten
00000343  74 6c 65 6e 67 74 68 3e  30 3c 2f 44 3a 67 65 74   tlength> 0</D:get
00000353  63 6f 6e 74 65 6e 74 6c  65 6e 67 74 68 3e 3c 44   contentl ength><D
00000363  3a 69 73 72 65 61 64 6f  6e 6c 79 3e 30 3c 2f 44   :isreado nly>0</D
00000373  3a 69 73 72 65 61 64 6f  6e 6c 79 3e 3c 2f 44 3a   :isreado nly></D:
00000383  70 72 6f 70 3e 3c 44 3a  73 74 61 74 75 73 3e 48   prop><D: status>H
00000393  54 54 50 2f 31 2e 31 20  32 30 30 20 4f 4b 3c 2f   TTP/1.1  200 OK</
000003A3  44 3a 73 74 61 74 75 73  3e 3c 2f 44 3a 70 72 6f   D:status ></D:pro
000003B3  70 73 74 61 74 3e 3c 44  3a 70 72 6f 70 73 74 61   pstat><D :propsta
000003C3  74 3e 3c 44 3a 70 72 6f  70 3e 3c 44 3a 63 72 65   t><D:pro p><D:cre
000003D3  61 74 69 6f 6e 64 61 74  65 2f 3e 3c 44 3a 67 65   ationdat e/><D:ge
000003E3  74 6c 61 73 74 6d 6f 64  69 66 69 65 64 2f 3e 3c   tlastmod ified/><
000003F3  2f 44 3a 70 72 6f 70 3e  3c 44 3a 73 74 61 74 75   /D:prop> <D:statu
00000403  73 3e 48 54 54 50 2f 31  2e 31 20 34 30 34 20 4e   s>HTTP/1 .1 404 N
00000413  6f 74 20 46 6f 75 6e 64  3c 2f 44 3a 73 74 61 74   ot Found </D:stat
00000423  75 73 3e 3c 2f 44 3a 70  72 6f 70 73 74 61 74 3e   us></D:p ropstat>
00000433  3c 2f 44 3a 72 65 73 70  6f 6e 73 65 3e 3c 2f 44   </D:resp onse></D
00000443  3a 6d 75 6c 74 69 73 74  61 74 75 73 3e            :multist atus>

解决方法

(这不是答案,这是一个调试请求,但是要发表评论太久了)

我的最佳猜测:您的WebDAV服务器未正确遵循HTTP协议的\ r \ n \ r \ n分隔符方案(可能是服务器错误?),您(或至少是我)可以通过使用以下命令创建请求来调试此问题netcat并转储对文件的响应并在十六进制编辑器中读取文件,为了获得服务器对文件的原始响应,请尝试:

的printf UFJPUEZJTkQgL0RBVEFMT0cgSFRUUC8xLjENCkhvc3Q6IDE5Mi4xNjguMS4xMDINClVzZXItQWdlbnQ6IGN1cmwvNy43MS4xDQpDb250ZW50LVR5cGU6IHRleHQveG1sDQpEZXB0aDogIDENCkFjY2VwdDogICovKg0KQ29udGVudC1MZW5ndGg6IDE3MA0KDQo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI / PjxEOnByb3BmaW5kIHhtbG5zOkQ9IkRBVjoiPjxEOnByb3A + PEQ6Z2V0bGFzdG1vZGlmaWVkLz48RDpnZXRjb250ZW50bGVuZ3RoLz48RDpjcmVhdGlvbmRhdGUvPjxEOnJlc291cmNldHlwZS8 + PC9EOnByb3A + PC9EOnByb3BmaW5kPg == | base64 -d | nc 192.168.1.102 80> server_response.bin

(PS,这是用Linux风格编写的,在标准Windows上不起作用,如果您的Windows上没有Linux终端,则可以从Cygwin获得linux-y终端或者,如果您使用的是Windows 10,则可以使用WSL,以上示例已在Cygwin上进行了测试,但可以在任何标准Linux终端上使用)

因为我猜想套接字没有自动关闭(可能是由于服务器上的“连接:保持活动”方案?),所以如果它没有终止,请让它运行至少10秒钟,然后再终止netcat自行终止

现在在十六进制编辑器中检查server_response.bin (我个人最喜欢的十六进制编辑器是HxD Hex Editor

并检查server_response.bin,响应中是否包含Content-Length标头?声明的Content-Length是否与实际内容长度匹配?响应的标头实际上是由响应的正文与0D 0A 0D 0A字节分开的?

如果任何一个问题的答案是no,则可能是您正在使用的WebDAV服务器中的一个错误,可以解释curl挂起(也许正在等待响应正文吗?),但也许可以上传您的server_response.bin,让我们在StackOverflow看看吗? (容易遗漏某些东西,特别是如果您没有在二进制/十六进制级别检查数据的经验)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。