以下命令在 FreeBSD 上的 GNU Bash 中有效,但在Git 重击在 Windows 上:
curl -X PUT https://example.com/_config/cors/origins -d '"*"'
预期结果是发送带有正文PUT
的请求(包括引号 - 它是一个 JSON 字符串)。https://example.com/_config/cors/origins
"*"
但是在 Windows 上,即使星号在引号内,它也会扩展为一个 glob。摘自--trace-ascii
cURL 日志:
0000:PUT /_config/cors/origins HTTP/1.1 004f:用户代理:curl/7.30.0 008e:内容长度:13 00a2:内容类型:application/x-www-form-urlencoded 00d3: => 发送数据,13个字节(0xd) 0000:.editorconfig == 信息:上传已完全发送:13 个字节,共 13 个字节
(.editorconfig
是当前目录中的第一个文件。)
使用反斜杠 ( '"\*"'
) 进行转义会传输反斜杠:
0000:PUT /_config/cors/origins HTTP/1.1 004f:用户代理:curl/7.30.0 008e:内容长度:4 00a1:内容类型:application/x-www-form-urlencoded 00d2: => 发送数据,4个字节(0x4) 0000:“\*” == 信息:上传已完全发送:4 个字节中的 4 个字节
两个反斜杠也会在请求中传输两个反斜杠。
0000:PUT /_config/cors/origins HTTP/1.1 004f:用户代理:curl/7.30.0 008e:内容长度:5 00a1:内容类型:application/x-www-form-urlencoded 00d2: => 发送数据,5 个字节(0x5) 0000:“\\*” == 信息:上传已完成发送:5 个字节,共 5 个字节
这是一个错误吗?
答案1
尝试一下这个想法逃离本网站上的提示和想法:
curl -X PUT https://example.com/_config/cors/origins -d "\*"
另一个想法来了来自类似问题的这个答案关于通过 POST 请求发送数据。首先创建一个名为“data.txt”的“数据”文件,其中只包含*
。然后运行以下curl
命令:
curl -X POST -d @data.txt https://example.com/_config/cors/origins
您可以尝试不使用-X POST
如下方式设置请求方法:
curl -d @data.txt https://example.com/_config/cors/origins