我的后端要求’Content-Type’请求标头正好是’application / json’.这是一个CORS请求,Chrome中的一切正常.来自开发人员工具网络标签源的确切标题:
Content-Type: application/json
我使用$http.default.headers.post在AngularJS中设置了它,它在Chrome中运行良好.但它在Firefox中不起作用. Firefox发送此代码:
Content-Type: application/json; charset=UTF-8
我试图通过以下方式更改标题:
> settings $http.default.headers(for .post,.common)
>为一个请求设置自定义标头
>使用$http拦截器
所有这些方法都适用于Chrome,但不适用于Firefox.该请求包含数据.
如果我一起删除’Content-Type’标题,它仍然会被发送,但它是:
Content-Type: text/plain; charset=UTF-8
(这在Chrome和Firefox中都会发生).
这让我觉得浏览器强制标题:)
我怎样才能在Firefox中绕过这个?
Firefox有charset = UTF-8
hard-coded for string payloads.
但是你可以发送一个Blob
:
var r = new XMLHttpRequest(); r.open("POST",...); r.send(new Blob( [JSON.stringify({a:1})],{type:"application/json"} ));
这也适用于角度$http XHR包装器:
$http({ method: "POST",url: "/echo/json",headers: { "Content-Type": "application/json" },data: new Blob([JSON.stringify({ a: 1 })]) });