You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

cURL设置Content-Type请求头不生效?问题求助

问题原因与解决方案

嗨,这个问题我太熟了——就是Windows CMD对引号的处理逻辑和类Unix终端不一样导致的!

你在CMD里用单引号(')包裹Header参数,但CMD根本不识别单引号,它会把单引号当成参数的一部分传给curl,结果就是curl完全没读到你指定的Content-Type: application/json头,只能 fallback 到默认的application/x-www-form-urlencoded类型发送请求,这就触发了服务器的415错误。

修正后的命令

把Header的单引号换成双引号(CMD只认双引号作为参数包裹符),同时如果你的JSON请求体里有双引号,记得用反斜杠(\)转义:

curl -v -X POST http://localhost:40071/api/Sale --header "Content-Type: application/json" -d "{\"key\":\"value\",\"anotherKey\":123}"

更省心的写法

如果你觉得转义JSON里的双引号太麻烦,可以把JSON内容单独存到一个文件里(比如叫request.json),然后用@文件名的方式传递请求体,这样既不用转义,可读性也更好:

curl -v -X POST http://localhost:40071/api/Sale --header "Content-Type: application/json" -d @request.json

只要把request.json放在当前CMD的工作目录下就行。

另外补充一句:curl在使用-d参数但没指定Content-Type时,默认就会用application/x-www-form-urlencoded,这就是你日志里看到这个类型的原因——因为你的Header参数根本没被正确解析~

内容的提问来源于stack exchange,提问作者user10133391

火山引擎 最新活动