あなたのウェブサイトにGetUser
ウェブメソッドがあるとしましょう:
http://www.example.com/User/GetUser/32
JSON応答を返します。
{ "Name": "John Doe" }
このメソッドがPOST要求のみを受け入れる場合http://www.example.com/User/GetUser/32
、POSTメソッドを使用してAJAX要求が行われた場合にのみ、コンテンツがブラウザーに返されます。CORSを実装していない限り、ブラウザはこのリクエストを自分のドメインに送信している他のドメインからデータを保護します。
ただし、GETリクエストを許可し、POSTではなくGETを使用して上記と同様のAJAXリクエストを作成した場合、悪意のあるユーザーがscript
HTMLのタグを使用して、自分のサイトのコンテキストにJSONを含める可能性があります。例www.evil.com
:
<script src="http://www.example.com/User/GetUser/32"></script>
www.evil.com
Webメソッドによって返されたオブジェクトを読み取る方法がないため、このJavaScriptは役に立たないはずです。ただし、古いバージョンのブラウザー(Firefox 3など)のバグにより、JavaScriptプロトタイプオブジェクトを再定義www.evil.com
して、メソッドから返されたデータを読み取ることが可能になっています。これはJSONハイジャックとして知られています。
これを防ぐいくつかの方法については、この投稿を参照してください。ただし、最近のブラウザー(Firefox、Chrome、IE)の新しいバージョンでは、これは既知の問題ではありません。