4

Apiary.io を使用して API をモックしています。しかし、どういうわけか、angularJS を使用して応答オブジェクトからヘッダーを読み取ることができません。そして、少なくとも Content-Type: application/json が firebug をチェックインして正しくセットアップされていると確信しています。Angular のコードは、リクエストを apiary.io 以外の場所に送信するときにヘッダーを出力できるため、ヘッダーも正しく読み取る必要があります...

  $http.get('http://ies.apiary.io/some').then(function(response) {  
    console.log("ok",response.headers('Content-Type'));
    },function(response){console.log("err",response);});

http://plnkr.co/edit/zMO0pXGsIdJkV0fZdBdw

4

1 に答える 1

5

それはすべてfirefoxのバグに要約されます:https ://bugzilla.mozilla.org/show_bug.cgi?id = 608735

CORSリクエストの場合、Firefoxはreq.getAllRequestHeaders()に対して何も返しませんが、req.getRequestHeader('Content-Type')は正しく返されます。

FFのバグを修正するか、Angularで回避する必要があります(jQueryのように)。または、さらに深く掘り下げてXmlHttpRequestインスタンスを直接使用する必要があります。


これも関連している可能性がありますが、おそらく主要な問題ではありません。


ただし、数日前、Apiary.ioはヘッダーに設定Max-AgeされていませんでしたCORS。したがって、最小限のブループリントがある場合は、CORSフライト前の応答がキャッシュされている可能性があり、ブループリントにリソースを追加した場合でも、後続のリクエストが許可されない可能性があります。

Max-Ageこれで10秒に設定されたので、正しく機能するはずです。ただし、ブラウザによっては、フライト前のキャッシュが影響する場合があります。パージするか、このアプリを別のブラウザでテストしてみてください。

于 2013-01-07T13:25:33.567 に答える