使用AngularJS在Firefox中更改请求标头时遇到问题

前端之家收集整理的这篇文章主要介绍了使用AngularJS在Firefox中更改请求标头时遇到问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的后端要求’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
    })])
});

Fiddle

猜你在找的Angularjs相关文章