icon [Ajax]クロスドメインでのAjax通信 (2016/01/15)
クロスドメインでAjax通信する場合、そのままではPHPセッションのやり取りができません。
(例えば、tokenを発行してサーバ間でデータ通信する場合とか)

ブラウザの仕様によって異なりますが、以下を指定してやれば大体大丈夫

・Javascript側で「xhrFields : {withCredentials: true}」を指定
・PHPヘッダーにドメインを明示的に指定(ワイルドカードはダメ)

PHP側サンプル

function request() {
        $allow_domain = '通信許可するドメイン';
        $values['token'] = $_SESSION['token'] = createToken();
   
        header('Content-type:application/json; charset=utf8');
        header("Access-Control-Allow-Origin: {$allow_domain}");
        header('Access-Control-Allow-Credentials: true');

        $results = json_encode($values);
        echo($results);
}

function createToken() {
      if ($_POST['secret_key'] == 'xxxxxxxx') {
             $token = 'xxxxxx';
      }
      return $token;
}

Javascript側サンプル※jQuery

var url = "https://xxxx.com/request";
var params = new Object();
params.secret_key = xxxxxxx;

$.ajax({
	type: 'POST',
	cache: false,
	url: url,
	data: params,
	xhrFields : {withCredentials: true},
	dataType: 'json',
	success: function(data) {
		//success
	},
	error:function() {
		//error
	}
});