axios 将 x-www-form-urlencoded 转换为 multipart/form-data

axios converts x-www-form-urlencoded to multipart/form-data

我正在用 axios 发送一个 post 请求。但是,当我检查浏览器控制台时,我看到请求 header 实际上是 content-type: multipart/form-data。我如何执行 application/x-www-form-urlencoded?或者它甚至重要吗?

let data = new FormData();
data.append('grant_type', 'authorization_code');
// ... removed for conciseness 
return axios.post(`${AUTH_URL}/token`, 
    data,
    {
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    }
}

FormData 个对象 总是 序列化为 multipart/form-data。他们必须这样做,因为他们支持文件上传,而 application/x-www-form-urlencodedapplication/json 不支持。

如果您想发送 application/x-www-form-urlencoded 数据,您应该传递一个 URLSearchParams 对象。

这在 the axios documentation 中有描述。

在任何一种情况下,您都不应该在 headers 中指定 Content-Type,因为底层浏览器 API 将从作为正文数据传递的对象类型正确推断它。