Angular2使用Payara Basic auth减轻了CORS错误

时间:2017-04-04 14:30:49

标签: angular cors payara

我正在尝试使用Java Pay应用程序的Payara服务器上的基本身份验证登录我的rest API。但是当我试图提出请求时。我收到了未经授权的CORS标头错误。

发出请求的代码。

var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "http://localhost:8080/twitter/api/tweet/get?id=7");
xhr.setRequestHeader("Authorization", "Basic " + btoa("username:password"));
xhr.setRequestHeader("cache-control", "no-cache");
xhr.setRequestHeader("postman-token", "d2883762-63dc-3158-ea76-21ff13182cee");

xhr.send(data);

错误。 error message

我添加了此代码以应用正确的标头,但它们似乎无法正常工作。

@Provider
public class NewCrossOriginResourceSharingFilter implements ContainerResponseFilter {

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext response) {
        response.getHeaders().putSingle("Access-Control-Allow-Origin", "*");
        response.getHeaders().putSingle("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, OPTIONS");
        response.getHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type");
    }

}

1 个答案:

答案 0 :(得分:0)

看起来您的API未启用OPTIONS http方法。在CORS场景中,在实际呼叫之前,使用http方法作为OPTIONS进行了飞行前请求。为了支持这一点,您的API应该允许OPTIONS和GET http方法。