cors ajax java_AJAX CORS请求源被阻止 - Java Web服务
每次我们尝试通过AJAX JQuery访问我的REST Web服务时,我们都被Cross-Origin阻止了:
阻止跨源请求:同源策略禁止在http:// *****读取远程资源(原因:缺少CORS头“Access-Control-Allow-Origin”) .
我们在Glassfish 3.1.2上使用Java REST Web Service,使用Firefox Quantum 57的客户端 .
请看下面的代码:
$.ajax({
type: 'POST',
url: webservice + "/webresources/ivi/syncPassphrase",
crossOrigin: true,
data :JSON.stringify({
'passPhrase' : passphrase
}),
dataType: 'json',
async: false,
contentType: 'application/json; charset=utf-8',
crossDomain: true,
success: function(data){
syncData = data["output"];
}, error: function(){
}
});
我们已经从SO上的几个答案中读到了并且尝试过如下:
$.ajax({
type: 'POST',
url: webservice + "/webresources/ivi/syncPassphrase",
crossOrigin: true,
data :JSON.stringify({
'passPhrase' : passphrase
}),
xhrFields: {
withCredentials: true
},
dataType: 'json',
async: true,
contentType: 'application/json; charset=utf-8',
crossDomain: true,
timeout: 20000,
beforeSend: function(xhr){
xhr.setRequestHeader("Access-Control-Allow-Origin",'http://111.111.111.111:8080');
},
success: function(data){
syncData = data["output"];
console.log("xxx1 " + syncData);
}, error: function(xhr, status, error) {
console.log("xxx2 " + xhr.responseText + " | " + status + " | " + error + " | ");
}
});
但上面的代码仍会产生相同的错误 .
在服务器端,我们为每个请求设置允许交叉原点并像下面的代码一样响应:
@Override
public void filter(final ContainerRequestContext requestContext,
final ContainerResponseContext cres) throws IOException {
cres.getHeaders().add("Access-Control-Allow-Origin", "*");
cres.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
cres.getHeaders().add("Access-Control-Allow-Credentials", "true");
cres.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
cres.getHeaders().add("Access-Control-Max-Age", "1209600");
}
我没想到了 . 任何的想法?
谢谢
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
