axios 没有覆盖默认 content-type header 到
axios not overriding default content-type header to
在我的 CRA 项目中,我设置了 axios 的默认值(在根 index.js
文件中)
axios.defaults.headers = {
"Content-type": "application/json",
"Accept": "application/hal+json"
};
现在我想在项目的某个地方发送 Content-type : application/x-www-form-urlencoded
请求,但 axios 仍在发出 application/json
请求。
const data = new URLSearchParams()
data.append('existingPassword', existingPassword)
data.append('newPassword', newPassword)
axios.post("http://localhost:8085/api/password-reset", data, {headers: {'Content-Type': 'application/x-www-form-urlencoded'}})
如果我注释掉默认值,这个请求就可以正常工作。另外,如果使用 Content-type : multipart/form-data
那么默认值也会被覆盖。
axios 版本0.20.0
反应版本 16.13.1
这可能是什么问题?
由于默认content-type header使用键Content-type
并且axios调用传递键Content-Type
,所以header不会合并.将默认的 content-type header 键重命名为 'Content-Type'
.
axios.defaults.headers = {
'Content-Type': 'application/json',
// ...
}
Also, if the use Content-type : multipart/form-data
then also defaults get override.
因为您使用了 Content-type
,它与默认 headers 中使用的密钥相同。
在我的 CRA 项目中,我设置了 axios 的默认值(在根 index.js
文件中)
axios.defaults.headers = {
"Content-type": "application/json",
"Accept": "application/hal+json"
};
现在我想在项目的某个地方发送 Content-type : application/x-www-form-urlencoded
请求,但 axios 仍在发出 application/json
请求。
const data = new URLSearchParams()
data.append('existingPassword', existingPassword)
data.append('newPassword', newPassword)
axios.post("http://localhost:8085/api/password-reset", data, {headers: {'Content-Type': 'application/x-www-form-urlencoded'}})
如果我注释掉默认值,这个请求就可以正常工作。另外,如果使用 Content-type : multipart/form-data
那么默认值也会被覆盖。
axios 版本0.20.0
反应版本 16.13.1
这可能是什么问题?
由于默认content-type header使用键Content-type
并且axios调用传递键Content-Type
,所以header不会合并.将默认的 content-type header 键重命名为 'Content-Type'
.
axios.defaults.headers = {
'Content-Type': 'application/json',
// ...
}
Also, if the use
Content-type : multipart/form-data
then also defaults get override.
因为您使用了 Content-type
,它与默认 headers 中使用的密钥相同。