XMLHttpRequest Level 2、XDomainRequestの両方に共通する注意点として、以下のようなものがあります。
上記の例で、事前にexample.comからCookieが発行されていたとしても、XMLHttpRequest Level 2、XDomainRequestを使ってクロスドメインでリクエストを発行する場合には、Cookieは送信されません。
XMLHttpRequest Level 2、XDomainRequestによるリクエストでは、そのリクエストがどこから送出されたのかを識別するOriginヘッダが付加されます。例えば、上記のXDomainRequest の例では以下のようなリクエストヘッダとなります。
GET /data.txt HTTP/1.1 |
上記の例では、レスポンスとしてテキストデータを返却していますが、ここでも忘れてはならないのはIEのContent-Type無視によるXSSです。
このテキストデータ(この例ではhttp://example.com/data.txt)に直接IEでアクセスした場合に、データ内にHTMLの断片が含まれている場合には、IEがファイルタイプをHTMLと判断しXSSが発生する可能性があります。これを避けるために
のような対策が必要となります。
このように、XMLHttpRequest Level 2、XDomainRequest を利用すると、JSONPのような不自然さを感じることなくクロスドメインでの通信が簡単に実現できます。これ以外にも、ブラウザによってはCross-document Messagingのような通信方法も実装されています。いずれも新しい技術であり、今後の普及に注目です。
より詳細な情報に関しては、下記のリファレンスを参考にしてください。
関連リンク: | |
---|---|
Cross-Origin Resource Sharing http://www.w3.org/TR/cors/ |
|
XMLHttpRequest Level 2 http://www.w3.org/TR/XMLHttpRequest2/ |
|
XDomainRequest Object http://msdn.microsoft.com/en-us/library/cc288060(VS.85).aspx |
|
HTML5 8.2 Cross-document messaging http://dev.w3.org/html5/spec/Overview.html#crossDocumentMessages |
|
An Introduction to Cross Document Messaging in Internet Explorer 8 http://msdn.microsoft.com/en-us/library/cc511311(VS.85).aspx |
|
Copyright © ITmedia, Inc. All Rights Reserved.