curl - 如何防止 CURL 将“#”变成评论?
问题描述
我正在使用 CURL 来调用端点。
我的端点#
是其中的一部分,例如
"http://Server.com/Magicxpi4.6/MgWebRequester.dlll?appname=IFSCarolina_Prod&prgname=HTTP&arguments=-Arest#Trigger1"
当我使用 CURL 命令调用此端点时,它会在井号之后切断我的端点,剩下的就是:
"http://Server.com/Magicxpi4.6/MgWebRequester.dlll?appname=IFSCarolina_Prod&prgname=HTTP&arguments=-Arest" ('#Trigger1' is missing)
我试图替换已签名的%23
,我得到以下结果:
"http://Server.com/Magicxpi4.6/MgWebRequester.dlll?appname=IFSCarolina_Prod&prgname=HTTP&arguments=-Arest3Trigger1"
使用的完整命令:
curl -H "Content-Type: application/json" -X POST -d "{"id":"1"}" "http://Server.com/Magicxpi4.6/MgWebRequester.dlll?appname=IFSCarolina_Prod&prgname=HTTP&arguments=-Arest#Trigger1"
解决方案
如果你(正确地)%23
在参数中使用,但你得到
"http://...?...&arguments=-Arest3Trigger1"
^
使用 missing %2
,您可能正在从批处理文件进行调用,并且%2
正在被解析为批处理文件的第二个参数(在这种情况下为空)。
如果是这种情况,您将需要通过将百分号加倍来转义百分号,使用%%23
.
从批处理文件中的行
curl "http://httpbin.org/anything?appname=IFSCarolina_Prod&prgname=HTTP&arguments=-Arest%%23Trigger1"
调用httpbin.org
请求和响应服务将返回
{
"args": {
"appname": "IFSCarolina_Prod",
"arguments": "-Arest#Trigger1",
"prgname": "HTTP"
},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "curl/7.55.1"
},
"json": null,
"method": "GET",
"origin": " . . . ",
"url": "https://httpbin.org/anything?appname=IFSCarolina_Prod&prgname=HTTP&arguments=-Arest%23Trigger1"
}
推荐阅读
- angular - Angular 总是发送 Cache-Control: no-cache for source
- jquery - 如何在每行网格单元格中显示谷歌距离矩阵 API 响应?
- java - AspectJ 1.9.4 with OpenJDK 11 without Spring Context 不能作为依赖模块工作
- vuejs2 - 使用 emit 在 2 个不同的组件之间传递数据
- c++ - 使用 C++17 或更高版本对向量中的元素对求和的最“功能”方式?
- html - 如何调整谷歌 reCAPTCHA 的大小?
- html - 垂直居中模式,滚动大内容
- react-native - React Native - 无法解析模块`@babel/runtime/helpers/interopRequireDefault`
- jenkins - 带有传递参数的 Jenkins 钻石依赖关系
- c# - 从 C# 将命令传递给自定义命令提示符