「www.domain.local」と「api.domain.local」の 2 つのサーバーがあります。wwwから呼び出されるAPIサーバーのスクリプトにCookieを設定したい。Chromeではそれができません(他のブラウザはまだ試していません)
私のPHPコード:
header("Access-Control-Allow-Origin:*");
echo json_encode(array("cookie"=>print_r($_COOKIE,true)));
setcookie("test","ok",time()+24000*3600,"/",".domain.local");
私のjQueryで:
$.getJSON("http://api.domain.local/test.php",{
command:"setcookie"
},function(fb){
alert(fb.cookie);
});
PHP は最初に持っている Cookie を返します。最初の実行では、これはゼロになるはずです。PHP スクリプトのヘッダーには、次のように表示されます。
セット Cookie:test=ok; 有効期限=2015 年 10 月 27 日火曜日 22:52:52 GMT; パス=/; domain=.domain.local X-Powered-By:PHP/5.3.14
これは私が期待するものです。ただし、Cookie は設定されていません。jQuery を再度実行すると、Cookie が設定されることを期待しています ($_COOKIE の print_r でアラートが表示されます) が、何も表示されません。Chrome のデバッグ部分にあるネットワーク リソースの [Cookie] タブで気づいたことの 1 つは、有効期限が「無効な日付」として設定されていることです。PHPスクリプトを直接実行すると、この問題は発生しません。
jQuery から呼び出された PHP スクリプトで Cookie を設定することは可能ですか?