javascript - 浏览器无法对不支持 CORS 的服务器进行远程请求

标签 javascript debugging xmlhttprequest cors fiddler

我正在开发一个 Web 应用程序,需要从浏览器通过 JSON 访问远程服务器,但远程服务器不支持 CORS。服务器最终会支持 CORS。但是我在开发和测试阶段需要浏览器访问远程服务器。

如何让浏览器允许来自未启用 CORS 的服务器的响应?

较新的浏览器对跨源资源共享 (CORS) 有安全限制。对于这些浏览器,如果来自服务器的响应 header 不包含“Access-Control-Allow-Origin: *”,则浏览器可能会引发错误,例如: enter image description here

最佳答案

在测试和调试过程中,可能会出现您想允许 CORS 但无法更改服务器以允许 CORS 的情况。有几个选项可以解决这个问题。在这里,我将讨论使用 Fiddler 解决这个问题。

通过使用 Fiddler,我可以看到应该从支持 CORS 的服务器返回的结果。 “访问控制允许来源:*”。
enter image description here

但出现的问题是远程服务器没有在响应 header 中返回“Access-Control-Allow-Origin:*”。

为了解决这个问题,我们可以指示 Fiddler 将响应 header “Access-Control-Allow-Origin:*”添加到所有响应中。

为此,请打开 Fiddler Customize Rules(参见图片)。

enter image description here

在OnBeforeResponse代码段添加如下代码

static function OnBeforeResponse(oSession: Session) {
   if(!oSession.oResponse.headers.Exists("Access-Control-Allow-Origin"))
   {
        oSession.oResponse.headers.Add("Access-Control-Allow-Origin", "*");
   }                        

现在您的浏览器应该能够访问不支持 CORS 的服务器。此解决方案的一个问题是您必须运行 Fiddler。

关于javascript - 浏览器无法对不支持 CORS 的服务器进行远程请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23568556/

相关文章:

javascript - 如何检测脚本是在浏览器中还是在 Node.js 中运行?

javascript - Object.assign 错误解决方法

c# - 使用 windbg 调试 .net 应用程序,无法插入断点

c# - 进入/调试接口(interface)实现者

javascript - Firefox 插件 : XMLHttpRequest minor bug reading JSON

javascript - JSNI - $wnd.location.assign() 未立即触发

javascript - 在Javascript中解析查询结果 block 中调用类方法

javascript - 诺基亚 OVI map 自动完成功能

javascript - 使用 XMLHttpRequest 获取单个文件的上传进度

c# - 如何调试 Linq Lambda 表达式?