2016-05-02 9 views
3

私はフレームワークでCORS(クロスオリジンリソース共有)を実装しています。CORS - Jquery ajaxの "withCredentials:true"が使用されたかどうかをサーバーがどのように知ることができますか?

私はXMLHttpRequestのリクエストがjQueryのajax(...)を使用して作られたとwithCredentialsプロパティがtrueでいるとき、サーバはこれら二つ応答しなければならないことを知っている:サーバー

  • Access-Control-Allow-Credentials: true
  • Access-Control-Allow-Origin:[THE_DOMAIN]

ワイルドカードを使用したの応答はありませんAccess-Control-Allow-Origin:*:そのdoesn't work

私の質問:サーバー上で、withCredentials: trueが使用されていることをどのように知っているので、私はワイルドカードを使用しませんか?

withCredentials: falseを使用したときとwithCredentials: trueを使用したときに送信されたヘッダーを比較しました。これらは同じです!

クライアントが要求したときに資格情報を許可したい場合は、を入力してください。Access-Control-Allow-Origin:*を使用しますか?

+1

もし 'withCredentials'がtrueに設定されていれば、元のドメインにあるクッキーセットも受け取らなければなりません。これが最初のリクエストに当てはまるか、サーバーが' Access-Control- Allow-Credentials:true'(私は両方のシナリオが真実であると想像することができますが、私は後者がもっともらしいと仮定します)。ワイルドカードについては、(原点ヘッダーから)許可されたドメインを常に指定する傾向があります。 [この回答は役に立ちそうです](http://stackoverflow.com/a/21851378/2579117)。 –

+0

@RogierSpiekerクエリが 'withCredentials:true'で行われ、クッキーがなくてもワイルドカードで失敗します。私は 'withCredentials:true'を使うときにクライアントにクッキーを送ることを強制することは望ましくないと思います...あなたは彼のコードのロジックを知らないのです。だからあなたは本当にクッキーの存在に頼ることができない、と私は思う。助けてくれてありがとう! – electrotype

+0

私は、 'withCredentials:true'が設定されている場合にクッキーを強制的に設定する必要があることを暗示していませんでした。この場合、クッキーの存在は 'withCredentials'が' true'であることを示します。 –

答えて

2

クライアントが要求したときに資格情報を許可したいのであれば、Access Control-Allow-Originを使用することはできません。

はい。

Access-Control-Allow-Origin:*のポイントは、ほとんどすべてのウェブサイトにアクセスを許可するということです。 「このデータは公開されており、誰でもアクセスできます」と言うことができます。

リソースにアクセスするための資格情報が必要な場合は、「このデータは公開されており、誰でもアクセスできます」とは意味がありません。

すべてのウェブサイトへのアクセスを許可すると、あなたのサイトにログインした誰かが訪問したすべてのウェブサイトがそのデータを読むことができます(効果的に公開します)。

したがって、データへのアクセスが許可されている信頼済みサイトのホワイトリストを用意して、明示的にアクセスを許可する前にOriginヘッダーを確認する必要があります。

+0

あなたは正しいと思います!しかし、私はまだ誰もワイルドカード版を使いたいと思ったのかどうかは分かりません!つまり、リクエストの 'Origin'ヘッダをレスポンスの' Access-Control-Allow-Origin'ヘッダーにコピーするだけで、これもまた「非常にウェブサイトを許可します」という証明書を許可するだけです。その "ヘッダコピー"トリックを使用するときに失われるワイルドカードversioは何か他のものがありますか? – electrotype

+1

静的な値を持つヘッダーをサーバー構成内の1行のコードに貼り付けることができます。 Originヘッダーを動的にエコーすることは、より多くの労力を要します。 – Quentin

関連する問題