IE上子域名之间的CORS问题

问题描述 投票:0回答:1

我有3个子域 clients.mywebsite.com,admins.mywebsite.com,api.mywebsite.com

api.mywebsite.com 是其他两个网站消耗的restful服务。当从网站调用API时,我遇到了一些跨源问题。我可以在大多数浏览器上通过设置 'Access-Control-Allow-Origin', '*' 在API上。但在Internet Explorer中,这个问题依然如故。

我可以通过在IE中启用CORS(默认情况下是关闭的)来手动解决这个问题。

Alt -> 工具 -> 互联网选项 -> 安全性(选项卡) -> 自定义级别 -> 杂项 -> 跨域访问数据源 -> 设置为启用。

然后从IE调试器的控制台中,我尝试了一个 GET 请求

var xhttp= new XMLHttpRequest();
xhttp.open("GET", "https://api.mywebsite.com/v1/", true);
xhttp.send();

此后,所有 GETPOST 请求开始正常工作,我可以登录。我无法让客户以这样的方式配置IE。有什么其他的解决办法?

xmlhttprequest cors internet-explorer-9
1个回答
0
投票

在IE 9和更早的时候,你可以用你使用的方式来配置IE来处理CORS问题。在IE 10+中,你的服务器必须在所有响应中附加以下头信息。

Access-Control-Allow-Origin: http://example.com
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: ACL, CANCELUPLOAD, CHECKIN, CHECKOUT, COPY, DELETE, GET, HEAD, LOCK, MKCALENDAR, MKCOL, MOVE, OPTIONS, POST, PROPFIND, PROPPATCH, PUT, REPORT, SEARCH, UNCHECKOUT, UNLOCK, UPDATE, VERSION-CONTROL
Access-Control-Allow-Headers: Overwrite, Destination, Content-Type, Depth, User-Agent, Translate, Range, Content-Range, Timeout, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control, Location, Lock-Token, If
Access-Control-Expose-Headers: DAV, content-length, Allow

你也可以选择附加Access-Control-Max-Age头,指定飞行前请求将被缓存的秒数,这将减少请求量。

Access-Control-Max-Age: 3600

你可以参考 这个环节 关于实现特定服务器的CORS。

如果你不想使用你所使用的方式,你可以参考以下内容 本文 来绕过CORS。

我们可以绕过它的方法是,宁可从你的浏览器中调用其他域的API,也要调用你自己域的API(例如 /api),并在nginx(或任何其他Web服务器)级别代理它到目标服务器。

© www.soinside.com 2019 - 2024. All rights reserved.