2017-04-04 10 views
0

私のPayallサーバーでJava EEアプリケーションで基本認証を使用して、残りのAPIにサインインしようとしています。しかし、私がリクエストしようとするとき。私は不正なCORSヘッダーエラーを受け取ります。Angular2がPayara Basic認証で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"); 
    } 

} 

答えて

0

あなたのAPIがOPTIONS httpメソッドを許可していないようです。 CORSシナリオでは、実際の呼び出しの前にOPTIONSとしてhttpメソッドを使用して行われた飛行前のリクエストがあります。これをサポートするには、OPTIONS APIメソッドとGET HTTPメソッドの両方を許可する必要があります。

関連する問題