
原生 JavaScript XMLHttpRequest 默认请求头
使用原生 XMLHttpRequest 发送 POST 请求,默认情况下,如果不显式设置请求头,通常只有一个默认的头:
Content-Type
: 如果不设置,默认通常是text/plain;charset=UTF-8
。这意味着如果你发送的是表单数据,服务器可能不会以预期的形式解析。
Fetch API 默认请求头
Fetch API 同样不会默认设置 Content-Type
,除非你在请求初始化的 Headers 中指定。因此,如果不显式设置,也是类似 XMLHttpRequest 的行为。
使用 Ajax 库 (如 jQuery 、 axios 等) 时的默认请求头
库的默认请求头可能会有所不同,以常见的库为例:
- jQuery: 在发送 POST 请求时,默认会设置
Content-Type
为application/x-www-form-urlencoded; charset=UTF-8
,这是表单提交的默认 MIME 类型,适用于键值对形式的数据。 - axios: 默认情况下,axios 在发送 POST 请求时不会自动设置
Content-Type
。如果你发送 JSON 数据,你需要手动设置Content-Type: application/json
。 - 其他库:不同的 Ajax 库可能有不同的默认行为,通常都会提供方法让你自定义请求头。
由于 ajax 使用表单数据提交,所以后端无需解析数据

而其他方式,且 Content-Type
不设定为 application/x-www-form-urlencoded

重要的是,当你发送 JSON 数据时,通常需要手动设置 Content-Type
为 application/json
,无论使用原生方法还是库。如果发送的是表单数据,则应设置为 application/x-www-form-urlencoded
或 multipart/form-data
(后者用于包含文件上传) 。
Comments NOTHING