我正在使用我的第一个Web应用程序。我有一个使用Jersey的Java服务器应用程序用于RESTful API,我有一个JavaScript(JQuery)驱动的客户端应用程序。我是一位经验丰富的Java开发人员,但这是我第一次使用JavaScript和CORS。
首先,这里是过滤器,它将CORS标头添加到通过我的服务器的所有响应中。我已经在调试模式下运行应用程序,我知道这个过滤器正在正常执行。
@Provider
public class CrossOriginHeaderFilter implements ContainerResponseFilter{
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
MultivaluedMap<String,Object> headers = responseContext.getHeaders();
headers.add("Access-Control-Allow-Origin", "*"); //TODO specify the origin here
headers.add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS");
headers.add("Access-Control-Allow-Headers", "*"); //TODO figure out what headers to allow
headers.add("Access-Control-Allow-Credentials", true);
}
}
这是我用来调用服务器的JQuery Ajax调用:
$.ajax({
url: "http://localhost:8080/orgapi/auth",
type: "POST",
headers: {
"Access-Control-Request-Method": "POST"
},
crossOrigin: true,
data: jsonMsg,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(){
alert("Login successful");
},
error: function(jqXHR, textStatus, errorThrown){
console.log(jqXHR);
alert(textStatus);
console.log(errorThrown);
}
});
我一直在阅读关于CORS和所有这些的所有内容,我现在就被卡住了。我不知道自己做错了什么,但我愿意打赌我的标题配置错误。
如果有人可以帮助我,我们将不胜感激。感谢。