2017-09-08 4 views
4

私はいくつかのAPIを使用している、と私は応答して、私はこれを持っていることに気づい:jQueryのAjaxのアクセスカスタムレスポンスヘッダ

Chrome Console Screen

私は、「X-DL-units-を読む必要があると思います「左」ですが、nullが返されます。

$.ajax(ajaxConfig).done(function(response, textStatus, xhr){ 
    var left = xhr.getResponseHeader("x-dl-units-left"); //null 
    var all = xhr.getAllResponseHeaders(); // "content-type: application/json;charset=UTF-8" 
}); 

誰でも知っているかもしれませんか? :(

要求はCORSを使用しているため、問題があるあなたに

+1

Thxを編集ロリー4 :)私はCtrlキー+ Kキーを押すのを忘れて:D –

+0

[この回答](https://stackoverflow.com/a/15444439/1848744)が説明しているようです問題は非常にうまくいく。 –

答えて

5

ありがとうございました。そのため、あなたが明示的にカスタムヘッダーが受信者にさらされることを可能にする必要があります。これは、応答にAcccess-Control-Expose-Headersヘッダを追加するためには、例えば。。:これは、応答を作成し、サーバー上で行われなければならないことは、サーバーの制御を持っていない場合は、この変更を行うことができなくなりますから、それを要求する必要があります

Acccess-Control-Expose-Headers: x-dl-units-left, x-dl-units, [other headers as needed...] 

注意APIプロバイダ

+0

実際にAPIは私のものではないので、編集できません。しかし、私がアクセスできない場合はブラウザで見ることができますか? –

+0

そして、私はこれをPHPのカールで手に入れたら? –

+1

私はそれについてのメモを追加しました。ヘッダーを追加するようにAPIプロバイダーに要求する必要があります。カスタムヘッダーを公開するためにヘッダーを追加せずにCORSを有効にするのは、むしろ奇妙です。たぶん見落としでしょう。ブラウザはすべてを見ることができます。この場合、JSは同じオリジンポリシーのためにできません –

0

あなたのアクセス指定は言及されていないので、それは店舗をしていますが、多少不明な場所にあります。今度はまずそれを初期化する必要があります。より良い初期化のために :

Acccess-Control-Expose-Headers: x-dl-units-left; 
$.ajax(ajaxConfig).done(function(response, textStatus, xhr){ 

    var all = xhr.getAllResponseHeaders(); 
// "content-type: application/json;charset=UTF-8" 

}); 
+0

私はこれをしようとする –

+0

私はこの情報を使用する方法を理解していない –

+0

あなたは宣言し、あなたの機能の外に残っている値を取得する必要があります。 –