【问题标题】:Webdav PROPFIND, no response with Curl or PostmanWebdav PROPFIND,Curl 或 Postman 没有响应
【发布时间】:2020-09-11 18:14:41
【问题描述】:

我有一个在本地网络上运行的 webdav 服务器,我能够得到其他请求的响应,但是 PROPFIND 让 Curl 和 Postman 都挂起而不返回任何内容,尽管我看到响应成功(207 Multi-Status)线鲨。我怀疑与网络适配器或分块编码有关的东西,但真的可以在这方面使用你的帮助!使用 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/lfs 都已到位,但我确实收到了 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>

【问题讨论】:

  • 挂起的响应表明这是一个服务器错误。如果您的请求中有错误,我只是希望返回一个错误。
  • 我仍然看到 Wireshark 的响应为 207,这就是为什么我更倾向于客户端。

标签: curl postman webdav


【解决方案1】:

(这不是答案,是调试请求,但是太长了不能评论)

我的最佳猜测:您的 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 终端上工作)

因为我猜套接字没有自动关闭(可能是由于服务器上的“连接:保持活动”-scheme?),让它在终止 netcat 之前运行至少 10 秒,如果它没有自行终止,

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

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

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

【讨论】:

  • server_response.bin 仍然为空,我可以再次在 WS 中捕获它,如下所示。 Content-Length 不存在,因为它是分块编码。此外,这些块似乎具有正确的长度和终止 (0d0a) HTTP/1.1 207 多状态\r\n 响应版本:HTTP/1.1 状态代码:207 响应短语:多状态服务器:Xcerebellum/1.0\r\n 连接: 关闭\r\n 内容类型:text/xml\r\n 位置:192.168.1.102/DATALOG\r\n 传输编码:分块\r\n \r\n HTTP 分块响应
  • @tkby 哇,这……太奇怪了;也许您对网络适配器的看法是正确的。您是否正在运行某种 3rdparty 防火墙或可以解释这一点的东西?也..也许试试netsh winsock reset,但那是..超级奇怪
  • 我认为问题更深一些,并且 ip 数据包在途中被丢弃,可能是由于无效的 tcp 校验和。不确定它是否在我手中解决,可能需要做一些魔术黑客来获取目录。 Mac finder 可以使用相同的请求安装驱动器仍然很奇怪。
  • @tkby .. 我会怀疑防火墙或病毒,直到您从同一网络上的不同系统获得相同的结果。你能在另一个系统上完全测试它吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 1970-01-01
  • 1970-01-01
  • 2018-12-23
  • 1970-01-01
  • 2021-06-30
  • 2020-10-23
相关资源
最近更新 更多