gpt4 book ai didi

jquery - 在 IE10 中使用 Node 和 Express 中的 CORS 时出现安全错误

转载 作者:行者123 更新时间:2023-12-01 01:24:23 25 4
gpt4 key购买 nike

我正在构建一个托管在 http://example.com 上的 Backbone 应用程序,它使用托管在 https://api.example.com 上的 API。对于 API,我使用 Node.js 和 Express.js 框架。我的 CORS 解决方案似乎适用于除 IE 之外的所有主要浏览器(甚至在 IE10 中失败)。

当从 IE10 发起请求时,该请求永远不会到达 API 服务器。据我所知,该请求甚至没有被发送。当我使用 IE10 的开发人员工具检查请求时,请求 header 和响应 header 都是空白的。当从任何其他浏览器发送请求时,都会收到该请求并正确生成响应。

这是我在控制台中看到的错误:

SCRIPT 7002: XMLHttpRequest: Network Error 0x4c7, The operation was canceled by the user.

请求使用 jQuery:

$.ajax({
url: apiRoot + "/endpoint",
success: function(response) {
// Omitted irrelevant code
}
});

根据this文章,CORS 在 IE 中默认处于禁用状态,必须启用:

Internet Explorer ignores Access-Control-Allow headers and by default prohibits cross-origin access for Internet Zone. To enable CORS go to Tools->Internet Options->Security tab, click on “Custom Level” button. Find the Miscellaneous -> Access data sources across domains setting and select “Enable” option.

果然,当我启用此设置时,请求将通过并且一切都会按预期进行。但是,我了解到此设置实际上与 CORS 无关,并且不应该影响它。当使用this tool时为了测试 CORS 兼容性,无论此设置是启用还是禁用,IE10 都会通过,这让我相信 CORS 已启用,而我只是做错了什么。

此外,当我运行 Fiddler 时,一切似乎都正常工作。 ,因为 Fiddler 充当代理。

作为引用,这里是服务器端与 CORS 相关的代码:

res.header("Access-Control-Allow-Origin", "example.com");
res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, OPTIONS");
res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-File-Name, X-File-Size, X-File-Type");
res.header("Access-Control-Allow-Credentials", true);
if (req.method == "OPTIONS") {
res.send(200);
}

最佳答案

尝试使用 HTTP 而不是 HTTPS 将请求发送到 API 服务器。这个问题听起来可能与服务器的 SSL 设置有关,而不是与请求本身有关。如果是这种情况,请尝试使用 SSL 设置来进行类似的操作。

var options = {
key: fs.readFileSync(key),
cert: fs.readFileSync(certificate),
ca: fs.readFileSync(CA),
requestCert: false,
};

https.createServer(options, app).listen(443);

关于jquery - 在 IE10 中使用 Node 和 Express 中的 CORS 时出现安全错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18422980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com