在 Windows 上的 Bash 中转义星号 *

在 Windows 上的 Bash 中转义星号 *

以下命令在 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-asciicURL 日志:

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

相关内容