2016-12-07 5 views
1

私はカスタムアプリケーションをKeyrock Fiware Identity Managerと統合しようとしています。 流れは以下の通り:彼は Keyrock CORSの問題

/のOAuth2 /承認/ response_type =コード& CLIENT_ID = {クライアントID}にリダイレクトさ

  • ログインボタンに

    • ユーザーがクリック&状態= XYZ & REDIRECT_URI = HTTP:{IP}:{ポート}

    • 認証は、彼は私が次のようにトークンを取得しようとする自分のアプリケーションにリダイレクトされた後、ユーザーは自分の資格情報
    • を挿入します。

    var reqData = "grant_type=authorization_code&code=" + code + "&redirect_uri=" + http:{ip}:{port}; 
     
    
     
    var reqHeaders = new Object(); 
     
        reqHeaders.Access-Control-Allow-Headers= "Content-Type, Access-Control-Allow-Headers,Access-Control-Allow-Origin, Authorization, X-Requested-With, origin, accept", 
     
        reqHeaders.Access-Control-Allow-Methods= "POST, GET, OPTIONS, DELETE, PUT", 
     
        reqHeaders.Access-Control-Allow-Origin="*" 
     
        reqHeaders.Access-Control-Expose-Headers="http://*/*" 
     
        reqHeaders.Authorization="Basic {token}" 
     
        reqHeaders.Content-Type="application/x-www-form-urlencoded" 
     
        reqHeaders.X-Requested-With="XMLHttpRequest" 
     
    
     
    $.ajax({ 
     
         url : idmURL + '/oauth2/token', 
     
         type : 'POST', 
     
         dataType : 'json', 
     
         crossDomain : true, 
     
         data : reqData, 
     
         headers : reqHeaders, 
     
         success : function(data) { 
     
          console.log(data); 
     
          token = data.access_token; 
     
         } 
     
    });

    しかし、ポストの要求は決して

    XMLHttpRequestはhtをロードできませんtp:// {ip}:{port}/oauth2/token。リクエストヘッダーフィールドプリフライト応答でAccess-Control-Allow-HeadersによってAccess-Control-Allow-Methodsが許可されていません。

    私は{IP}を挿入しようとしました:Keyrockのlocal_settings.pyファイルにCORS_WHITELISTへとALLOWED_HOSTに{ポートを}が、何も変わりません。

    誰でも手伝ってもらえますか?

    答えて

    1

    皮肉なことに、私は問題はあなたがCORSヘッダーがリクエストに応答するためのもの使用していることに起因すると思う:

    • アクセス制御 - 許可 - ヘッダ
    • アクセス、制御 - したがって、プリフライトがBを失敗し
    • アクセス制御 - 許可 - 起源
    • アクセス制御 - 露光 - ヘッダ

    -メソッドを許可サーバーはこれらを許可せず、応答ヘッダーのAccess-Control-Allow-Headersにあるヘッダーのサブセットのみを許可します。

    リクエストから削除してください。

    詳細:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

    +0

    あなたは正しいです。 これらのフィールドを削除するとすべてが正常になります。ありがとうございました。 – sirnino

    関連する問題