获取请求未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头
问题描述:
我试图从我的应用程序向Tomcat服务器发送Ajax请求,但我得到这个错误(我的web应用程序在Chrome上运行):获取请求未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头
回应预检要求未通过访问控制检查:没有“访问控制允许来源”标头出现在所请求的资源。因此不允许原产地'null'访问。响应有HTTP状态代码403
我一直在使用
'Access-Control-Allow-Origin' : 'http://localhost:8080/app',
尝试,但没有奏效。
我的Ajax代码:
var arr = [1];
$.ajax({
url: 'http://localhost:8080/app',
type: 'POST',
contentType:'application/json',
headers: {
'Access-Control-Allow-Origin' : 'http://localhost:8080',
},
data: JSON.stringify(arr[0]),
success: function(data){
//On ajax success do this
alert(data);
}
});
答
基本上,做一个跨域AJAX请求,请求的服务器应该允许资源的跨源共享(CORS)。你可以阅读更多有关在这里: http://www.html5rocks.com/en/tutorials/cors/
在您的情况,您要设置在实际上需要将其设置成http://localhost:8080/app服务器端代码客户端头。
如果您使用的是PHP的Apache服务器,那么你将需要添加在你.htaccess
文件如下:
Header set Access-Control-Allow-Origin "*"
答
在请求一个REST服务的情况下:
你需要让REST服务带有Spring注释的端点上的CORS(资源的交叉来源共享):
@CrossOrigin(origins = "http://localhost:8080")
必须在服务器上设置该标头,而不是客户端。 – dandavis
在服务器上我应该在哪里保留它 – Labeo
因为您没有真正使用响应,您可以使用普通的旧