12

基本認証を含めると、プリフライトされたHTTPリクエストはどのように見えますか?次の会話のように?CORSとHTTP基本認証

OPTIONS /api/resource HTTP/1.1 
Access-Control-Request-Method: GET 
Origin: http://jsconsole.com 

サーバー:

HTTP/1.1 200 OK 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, GET, PUT, DELETE 
Access-Control-Allow-Headers: Authorization 
Access-Control-Max-Age: 1728000 
Access-Control-Allow-Credentials: true 

クライアント:

イムは、ヘッダが送信されるようにもそのことはできませんので、Firebugのと正しく

クライアントを、それをデバッグする場合は、必要があるかを理解するために問題を抱えて

GET /api/resource HTTP/1.1 
Access-Control-Request-Method: GET 
Access-Control-Allow-Credentials: true 
Origin: http://jsconsole.com 

サーバー:

HTTP/1.1 401 Unauthorized 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, GET, PUT, DELETE 
Access-Control-Allow-Headers: Authorization 
Access-Control-Max-Age: 1728000 
Access-Control-Allow-Credentials: true 
WWW-Authenticate: Basic realm="Authorisation Required" 

クライアント:

GET /api/resource HTTP/1.1 
Access-Control-Allow-Credentials: true 
Authorization: Basic base64encodedUserAndPassword 
Access-Control-Request-Method: GET 
Origin: http://jsconsole.com 

はサーバー:

HTTP/1.1 200 OK 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, GET, PUT, DELETE 
Access-Control-Allow-Headers: Authorization 
Access-Control-Max-Age: 1728000 
Access-Control-Allow-Credentials: true 
+0

http://avalanche123.com/blog/2011/10/10/cross-domain-javascript-lessons-learned/ –

+0

の記事の途中で、「基本認証付きCORS」のセクションをご覧ください。残念なことに、アバランシェブログエントリは古くなっています。 Chromeは完全に基本認証をサポートしています。しかし、あなたがセキュリティ設定で遊ぶのでなければ、IEはそうではありません。 – ianbeks

答えて

18

あなたが資格情報を要求している場合、サーバは(アクセス制御 - 許可 - 起源レスポンスヘッダ内の特定の起源に応答しなければなりませんワイルドカード*は使用できません)。もちろん、それはまた、Access-Control-Allow-Credentialsレスポンスヘッダでも応答する必要があります。

+1

そして、Access-Control-Allow-Headersは実際には必要ありません。 FF/Chromeはそれなしで動作します。しかし、CORSのIEの実装では、セキュリティ設定(クロスドメイン要求を有効にする)を行わない限り、基本認証はまったくサポートされません。 – ianbeks

+1

それでは、基本認証の仕方によって異なります。許可ヘッダーを手作業で作成すると正しいと思いますが、ブラウザがそれを供給するようにするには、許可の資格情報が必要です。 –