2016-09-22 11 views
0

私はエラーを取得してバックエンドのREST API &として& Javaの春フロントエンドでangularjs2を使用しています。リクエストヘッダフィールドは、プリフライト応じてアクセス制御 - 許可 - ヘッダによって許可されていない

これは私の角度コードです。

private logInUrl = 'Some url'; // URL to JSON file 


    authenticateUserCredentials(logIn: LogIn): Observable<ResponseClass> { 

    let body = JSON.stringify(logIn); 
    let headers = new Headers(); 
    headers.append('Content-type', 'application/json'); 
    headers.append('appKey', 'superadmin'); 

    let options = new RequestOptions({ headers: headers }); 

    return this.http.post(this.logInUrl, body, options) 
        .map(this.extractData) 
        .catch(this.handleError); 
    } 

とフィルタを使用したサーバー側コード。 REST APIが

ヘッダAPPKEY &コンテンツタイプの両方で正常に動作している

public final class CorsFilter extends OncePerRequestFilter{ 
    @Override 
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) 
      throws ServletException, IOException { 
      // CORS "pre-flight" request 
      response.addHeader("Access-Control-Allow-Origin", "*"); 
      response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE"); 
      // response.addHeader("Access-Control-Allow-Headers", "Content-type,X-Requested-With,Origin,accept"); 
      response.addHeader("x-access_token","Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"); 
      response.addHeader("Access-Control-Max-Age", "1800");//30 min 

     filterChain.doFilter(request, response); 
    } 
} 

で郵便配達アプリはこれがAPPKEYヘッダーを実装するための正しい方法ですまたは送信するための他の方法を提案してくださいカスタムヘッダーまたはカスタムデータを事前定義ヘッダーに追加します。

+0

プリフライトリクエストは 'OPTIONS'リクエストです。リクエストに' OPTIONS'を許可してください。 – Supamiu

+2

コード内のコメントアウトされた行は、Access-Control-Allow-Headersを設定する正しい方法ですが、エラーは要求ヘッダーが許可されることを期待しているということです。リストに追加してみてください –

答えて

0

アングル2はヘッダーの下部ケーシングです!

したがってContent-Typecontent-typeになりますので、バックエンドが許可することを確認してください。 :)

も参照してくださいこの質問:そこCross orgin error in google chrome for the api call

私は、角の部分が正常に動作していることを確認するためにあなたのAngular2-POSTメソッドをテストする方法について説明します。

+0

答えに感謝しますが、上記のコードに示されているjava springにフィルタを追加することで十字問題が解決されました。カスタムヘッダー** appKey **を削除すると、投稿要求が正常に機能します。 –

関連する問題