[JavaScript] XmlHttpRequest Level 2

クロスドメインで非同期通信(Ajax)が可能に。

クライアントサイド

現在、すでにほとんどのブラウザが対応している。

しかし、IEは8以下だけでなく9でも対応しておらず、独自のXDomainRequestを使わなければならない。

これには、jQueryでさえ今のところ非対応。対応させるには、下記のプラグインなどを導入する必要がある。

サーバサイド

レスポンスのヘッダに「Access-Control-Allow-Origin」の記述が必要。

【全ドメインからのリクエストを許可】
[text]
Access-Control-Allow-Origin : *
[/text]

【特定のドメインからのリクエストを許可】
この場合、ひとつのURLしか指定できない。
[text]
Access-Control-Allow-Origin : htttp://site.oukasei.com
[/text]

PHPの場合
[php]
header('Access-Control-Allow-Origin : *’);
[/php]

Apacheの場合(httpd.confや.htaccessで)
[text]
Header Append Access-Control-Allow-Origin : *
[/text]

参考
[text]

Order allow,deny
Allow from all


Header set Access-Control-Allow-Origin “*"


[/text]

cookieを送りたい場合

参考サイト

クライアントサイド

XMLHttpRequest#withCredentialsをtrueにする。
[javascript]
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
[/javascript]

サーバサイド

レスポンスのヘッダに「Access-Control-Allow-Credentials」の記述が必要。
(credentialは「証明書」という意味)
[text]
Access-Control-Allow-Credentials : true
[/text]

JSONPのほうがよほど手軽なのだが、その仕様上、POSTが使えない