我正在使用JavaScript的fetch函数从localhost调用外部POST请求。
除了IE11之外,所有浏览器都能正常运行,IE11会在请求中返回此错误:
“SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied.” in IE
这是代码:
export const signIn = (email, password) => {
const base64 = btoa(`${email}:${password}`);
const headers = new Headers({
Authorization: `Basic ${base64}`
});
return new Promise((resolve, reject) => {
fetch(`${__API__}/spa/token`, {
method: "POST",
headers,
credentials: "include"
})
.then(resp => {
if (resp.status >= 400) {
reject(resp);
}
resolve(resp);
})
.catch(reject);
});
};
我读过其中一个“解决方案”的另一个帖子(How to solve the error "SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied." in IE)是在这里更改IE的配置:
互联网选项>安全>启用以下设置:其他>跨域访问数据源。
对我来说,这不是解决方案,因为我不会要求最终用户更改他/她的配置。
此外,当我在IE中检查请求时,我可以看到POST实际上被称为GET。
UPDATE :如果我删除了标题选项,它就可以了,但我需要标题。
答案 0 :(得分:1)
好的,所以这是我的解决方案:
我发现问题是发送带有标头的提取。如果我首先发送它没有标题(如预检请求),然后正常发送它只是工作。
当然,这只适用于IE。