我在域上的tomcat 8服务器上运行了一个应用程序 和同一域上的Angular Web应用程序。 Web应用程序使用tomcat应用程序,但是如果没有在web.xml中启用CORS过滤,webapp就会抱怨跨源资源共享,即使它们都在同一个ip上。
以下是我向tomcat应用程序发出js请求的方法
function getResources($http, url){
return $http({
method: 'GET',
url: url,
headers: {'Accept': 'application/json'}
}).then(function (result) {
return result.data;
});
};
我也尝试过:dataType: 'jsonp'
错误如下:
XMLHttpRequest cannot load http://localhost:8080/APP/requestStuff.No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access.
这对我来说很奇怪,因为如果原点与我所连接的地方相同,那么它不应该是交叉原点。
答案 0 :(得分:0)
尝试给它一个相对网址而不是规范网址。
这些网站还需要共享同一个端口。 https://en.wikipedia.org/wiki/Same_origin_policy#Origin_determination_rules
另外,请确保获得正确的网址。例如,如果你真的引用了错误"来源' the_IP_of_web_app'",那就失败了,因为它不是一个IP地址。
答案 1 :(得分:0)
交叉源请求策略适用于方案(例如http vs https),域或端口变化的任何时间。因此,在您的情况下,因为端口不同,您将需要CORS。