2016-10-21 5 views
1

私は、暗号化されたユーザー名とパスワードの承認をfronで設定し、サーバーから要求ヘッダー応答ベアラー認可を取得しています。アヤックスで私はサファリの応答ヘッダーを正しく取得するようになっていますが、クロムとFirefoxではそのようなnullがあります。ベアラートークンを取得するにはchromeとfirefoxの問題のみです。その問題を解決するには?このarticelから参照しjquery ajax successでレスポンスヘッダーの認証を取得するには?

Ajaxコード、

$.ajax({ 
      type:"POST", 
      url:url, 
      dataType: "json", 
      async:false, 
      headers:{ 
       'Authorization':'Basic '+btoa(useremail+":"+password) 
      }, 
      data:'{"datas"}', 
      success: function (data, status, request, xhr){ 
       alert(request.getResponseHeader('Authorization')); 
      } 

enter image description here

+0

クロスドメインリクエストされますか? '' async:false'''を設定する理由は何ですか? –

+0

@ fabio.sussettoはい。これはドメイン間の要求です。非同期falseの具体的な理由はありません。 – Sathya

+0

次に、async:falseを削除する必要があります。「このオプションをfalseに設定すると、非同期ではなくなるため、ブラウザが応答しなくなる可能性があります。 –

答えて

0

:記事の例に示すように、http://osric.com/chris/accidental-developer/2014/08/using-getresponseheader-with-jquerys-ajax-method/

done関数としてみてください:

$.ajax({ 
    type:"POST", 
    url:url, 
    dataType: "json", 
    async:false, 
    headers:{ 
     'Authorization':'Basic '+btoa(useremail+":"+password) 
    }, 
    data:'{"datas"}', 
}).done(function (data, textStatus, xhr) { 
    console.log(xhr.getResponseHeader('Authorization')); 
}); 
+0

あなたがOPを使うことを提案している 'xhr'オブジェクトは、彼が現在彼の成功のコールバックで使っている'要求 'と同じオブジェクト**です。 – biphobe

0

注意してくださいjQuery 1.8 asyncのオプションは廃止予定です。これはおそらく、なぜ起こるかについては

:CORS要求中

、getResponseHeader()メソッドは、単純な 応答ヘッダにアクセスすることができます。

  • のCache-Control
  • のContent-言語
  • のContent-Type
  • のLast-Modified
  • プラグマ
期限: は次のように単純なレスポンスヘッダが定義されています

ソリューションの場合:

クライアントが他のヘッダーにアクセスできるようにするには、 にAccess Control-Expose-Headersヘッダーを使用する必要があります。このヘッダーの値 は、クライアントの に公開する応答ヘッダーのカンマ区切りリストです。

出典:https://www.html5rocks.com/en/tutorials/cors/

+0

しかし、同じコードが完全にサファリで働いています。 – Sathya

+0

'getResponseHeader'は' Access-Control-Expose-Headers'ヘッダを追加した後もfirefox/chromeでnullを返しますか? – biphobe

+0

はい。まだ私はnullになっています。 – Sathya

0

はこれを試して...

var settings = { 
    "crossDomain": true, 
    "url": url, 
    "method": "POST", 
    "headers": { 
    "content-type": "application/x-www-form-urlencoded", 
    "Authorization":"Basic "+btoa(useremail+":"+password) 
    }, 
    "data": { 
    "name": "name" 
    } 
} 

    $.ajax(settings).done(function (data,status, xhr) { 
    console.log("Authorization=> "+xhr.getResponseHeader('Authorization')); 
});  
関連する問題