如何转义curl命令

时间:2017-12-28 15:03:04

标签: curl http-headers escaping

我想通过REST调用来卷曲网址。该呼叫需要与其一起发送授权标头。授权标头中包含一个!(撇号)字符。当我发送它时会抛出以下错误。

-bash:!FeTSs:找不到事件

curl -H“X-Med-Authorization:3b7N / FNDcEVX& v09n8O6jeUz9l!FeTSs; cSf3wz / mDsvzKGX”-X GET http://192.168.1.2:8383/dcCore/health/

我搜索出答案是在帖子数据中转义特殊字符但不在标题中。

2 个答案:

答案 0 :(得分:2)

您可以使用$''格式按原样传递参数。例如

curl -H $'appCookie = x-Abc!123'http://localhost

参考:wiki.bash-hackers.orgwww.gnu.org

答案 1 :(得分:1)

我自己遇到了这个问题,并且在寻找解决方案之前感到非常沮丧,直到我发现反斜杠就足够了!

所以:

curl -H "X-Med-Authorization:3b7N/FNDcEVX&v09n8O6jeUz9l!FeTSs;cSf3wz/mDsvzKGX" -X GET http://192.168.1.2:8383/dcCore/health/

只需成为:

curl -H "X-Med-Authorization:3b7N/FNDcEVX&v09n8O6jeUz9l\!FeTSs;cSf3wz/mDsvzKGX" -X GET http://192.168.1.2:8383/dcCore/health/

使用--verbose标志运行cURL时,可以通过查看输出来检查是否发送了正确的标头。在那我看到:

> X-Med-Authorization:3b7N/FNDcEVX&v09n8O6jeUz9l!FeTSs;cSf3wz/mDsvzKGX

没有反斜杠。繁荣。我怀疑您现在已经找到了解决方案,但是希望这可以帮助某人。