如果您在使用 this.$http.post
方法时显式地设置了 headers
对象,并且指定了 'Content-Type': 'application/json'
,但请求的实际 Content-Type
仍然是 application/x-www-form-urlencoded
,可能有以下几种原因:
-
全局配置覆盖:请确保在全局配置中没有覆盖了
headers
的设置。比如在axios
全局配置中设置了'Content-Type': 'application/x-www-form-urlencoded'
,会覆盖掉您在this.$http
中的设置。 -
干扰的中间件:如果您在项目中使用了像
axios
这样的 HTTP 库,可能其中间件对请求进行了处理,包括对Content-Type
进行了覆盖或修改。 -
参数类型问题:如果您的
param
参数是一个 JavaScript 对象(Plain Object)而不是字符串,axios
库会自动将其序列化为x-www-form-urlencoded
格式的参数,并自动设置Content-Type
为application/x-www-form-urlencoded
。请确保您的param
参数是一个 JSON 字符串,而不是 JavaScript 对象。 -
其他库的冲突:如果您在项目中使用了其他类似的 HTTP 库,可能存在与
axios
或 Vue 自身库的冲突。请确保您只在项目中使用一个 HTTP 库,避免多个库之间的冲突。
请根据具体情况检查上述原因,并逐一排除,以确保 headers
设置能够生效,并正确地传递 application/json
的 Content-Type
。