我正在开发一个 Web 应用程序,需要从浏览器通过 JSON 访问远程服务器,但远程服务器不支持 CORS。服务器最终会支持 CORS。但是我在开发和测试阶段需要浏览器访问远程服务器。
如何让浏览器允许来自未启用 CORS 的服务器的响应?
较新的浏览器对跨源资源共享 (CORS) 有安全限制。对于这些浏览器,如果来自服务器的响应 header 不包含“Access-Control-Allow-Origin: *”,则浏览器可能会引发错误,例如:
最佳答案
在测试和调试过程中,可能会出现您想允许 CORS 但无法更改服务器以允许 CORS 的情况。有几个选项可以解决这个问题。在这里,我将讨论使用 Fiddler 解决这个问题。
通过使用 Fiddler,我可以看到应该从支持 CORS 的服务器返回的结果。 “访问控制允许来源:*”。
但出现的问题是远程服务器没有在响应 header 中返回“Access-Control-Allow-Origin:*”。
为了解决这个问题,我们可以指示 Fiddler 将响应 header “Access-Control-Allow-Origin:*”添加到所有响应中。
为此,请打开 Fiddler Customize Rules(参见图片)。
在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/