2011-09-14 11 views
9

これは動作していないよう:クロスドメインAJAXプリフライト失敗起源チェック

$.ajax({ 
    url:  "http://localhost:3000/foo.json", 
    data:  { foo: 'bar' }, 
    headers: { 'HTTP_X_CUSTOMHEADER': 'foobar' }, 
    xhrFields: { withCredentials: true } 
}); 

私はjsfiddle上でそれを実行すると、OPTIONS要求(クロームデバッグツールに応じては)それは次のようになり、オフに起動します: (クロームデバッグツールに応じて)、その後

Access-Control-Request-Headers: Origin, HTTP_X_CUSTOMHEADER, Accept 
Access-Control-Request-Method: GET 
Origin:       http://fiddle.jshell.net 

そして、私のローカルサーバーは、以下のヘッダを返します。

(手動READAために再フォーマットビリティ)

Access-Control-Allow-Credentials: true 
Access-Control-Allow-Headers:  HTTP_X_CUSTOMHEADER 
Access-Control-Allow-Methods:  GET, POST, PUT, DELETE, OPTIONS 
Access-Control-Allow-Origin:  http://fiddle.jshell.net 
Access-Control-Max-Age:   10 

Cache-Control:     no-cache 
Connection:      Keep-Alive 
Content-Length:     1 
Content-Type:      text/html; charset=utf-8 
Date:        Wed, 14 Sep 2011 22:42:28 GMT 
Server:       WEBrick/1.3.1 (Ruby/1.8.7/2010-01-10) 
X-Runtime:      2 

し、コンソールに私はこのようなエラーメッセージが出ます:

XMLHttpRequest cannot load http://localhost:3000/foo.json?foo=bar. 
Origin http://fiddle.jshell.net is not allowed by Access-Control-Allow-Origin. 

をしかしAccess-Control-Allow-Originヘッダは私のサーバーは、プリフライトリクエストに応答したときに同じ表示されます。だから私はこのパズルのどの部分をここで逃していますか?

+0

発信要求のヘッダーはどのように見えますか?それらに[Origin:](https://developer.mozilla.org/en/HTTP_access_control)ヘッダーを含める必要があります。しかし、私はブラウザが(常にhttps://developer.mozilla.org/en/HTTP_access_control#Origin)それを追加すると信じています。 – daxelrod

+0

オプションの要求のヘッダーで質問を更新しました。 –

答えて

4

OHHHHH、[OK]を私はこれを考え出したが、最後に...

はどうやらプリフライトOPTIONSレスポンスヘッダには、それらを必要とする唯一の場所をアレント。実際のコンテンツのレスポンスにもこれらのヘッダーを含める必要があります。私は唯一の「チケット」が必要だと思って、これらのヘッダーがプリフライトで降りてきただけです。

実際の資産のGETリクエストに同じヘッダーを追加しました。私はドキュメントでそれを逃したと思う。

+2

もっと詳しく説明できますか?私はCORS地獄に詰まっている:http://stackoverflow.com/questions/13318436/https-access-control-allow-origin-not-working-no-matter-what-with-php-5-3-apac –

+0

あなたは私にこれを手伝ってもらえますか?http://stackoverflow.com/questions/41952995/response-status-is-0-in-jquery-ajax?noredirect=1#comment71099392_41952995 ?? – SSS

1

Originは単純なヘッダーと見なされないため、Access Control-Allow-HeadersセクションにOriginを含める必要があります(IMO、仕様には単純ヘッダーのリストにOriginが含まれている必要があります)。

+0

OPTIONS応答ヘッダーに 'Access-Control-Allow-Headers:HTTP_X_CUSTOMHEADER、Origin、Accept'を追加しましたが、何も変更されませんでした。 –

関連する問題