我有一个运行在本地网络上的webdav服务器,我可以通过其他请求获得响应,但PROPFIND让Curl和Postman都挂起,没有返回任何内容,尽管我看到Wireshark的响应是成功的(207多状态(。我怀疑与网络适配器或分块编码有关,但真的需要你的帮助!使用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创建请求并将响应转储到文件并在十六进制编辑器中读取文件来调试此问题,为了获得服务器对文件的原始响应,请尝试:
printfUFJPUEZJTkQgL0RBVEFMT0cgSFRUUC8xLjENCkhvc3Q6IDE5Mi4xNjguMS4xMDINClVzZXItQWdlbnQ6IGN1cmwvNy43MS4xDQpDb250ZW50LVR5cGU6IHRleHQveG1sDQpEZXB0aDogIDENCkFjY2VwdDogICovKg0KQ29udGVudC1MZW5ndGg6IDE3MA0KDQo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PjxEOnByyby 3BmaW5kIHhtbG5zOkQ9IkRBVjoiPjxEOnBy3A+PEQ6Z2V0bGFzdG1vZGlmaWVkLz48RDpnZXRjb250ZW50bGVuZ3RoLz48RD pjcmVhdGlvbmRhdGUvPxEOnJlc291cmNldHlwZS8+PC9EOnByb3A+PC9EOnyb3BmaW5kPg=|base64-d|nc 192.168.1.102 80>服务器响应bin
(PS,这是用linux风格编写的,在标准Windows上不工作,如果你的Windows上没有linux终端,你可以从Cygwin获得linux-y终端,或者如果你在Windows 10上,你可以使用WSL,上面的例子在Cygwin上测试过,但应该在任何标准linux终端中工作(
由于我猜套接字没有自动关闭(可能是由于"连接:保持活动"-服务器上的方案?(,在终止netcat之前,让它运行至少10秒,如果它自己没有终止,
现在在十六进制编辑器中检查server_response.bin(我个人最喜欢的十六进制编辑器是HxD十六进制编辑器(
并检查server_response.bin,响应是否包含Content-Length
头?声明的内容长度与实际内容长度匹配吗?响应的头实际上是由响应的主体用0D 0A 0D 0A
字节分隔的吗?
如果这些问题中的任何一个的答案是no
,那么这可能是您使用的WebDAV服务器中的一个错误,可以解释curl挂起(可能在等待响应体?(,但可能会上传您的server_response.bin,让我们在StackOverflow看看?(很容易错过一些东西,尤其是如果你没有在二进制/十六进制级别检查数据的经验(