我在我的服务器上有以下设置:
一切都运行在一个我完全可以控制的服务器上。
我目前在基于Java的后端使用com.thetransactioncompany.cors.CORSFilter
来启用CORS。 一切都注意到工作正常。
我的前端有以下代码将用户redirect到login页面,以防发生未经身份validation的REST调用:
$.ajaxSetup({ statusCode: { 401: function(){ window.location.replace('/#login'); }, 403: function() { window.location.replace('/#denied'); } }, cache: false });
除IE10以外的所有主stream浏览器都能正常工作。
在IE10中,当未经authentication的用户调用REST服务器时,服务器返回一个HTTP 401(它应该)。 我在IEdebugging器hoewever中看到的XHR对象似乎已经将其转换为status = 0
。 (在Chrome上,你可以清楚地看到它的status = 401
。
这似乎是IE10中的一个错误,IE10将HTTP状态401视为networking错误。 控制台显示:
SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied
有没有办法解决这个问题? 我可以在ajaxSetup
添加对statusCode 0的处理,但看起来更像是一个黑客。
有没有办法通过某种Apache / Tomcatconfiguration完全禁用CORS?
目前我的apacheconfiguration是使用虚拟主机进行设置的,所以下面的公共URL映射它们相应的内部主机名/端口。
http://mywebapp.com -> http://myrealservername:8080/ -> /var/www/http http://myrestapi.com -> http://myrealservername:8088/ -> /usr/local/tomcat/webapps/restapi
有可能/build议有Apache
如果这样的设置是可能的,我不会再需要CORS了? 在增加浏览器支持的同时,它会使事情变得更简单。