从不同的域运行时,不会设置Cookie值

时间:2015-09-03 05:55:50

标签: javascript php cookies session-cookies

我目前正在制作一个连接到服务器上的php文件的网页游戏,以获取某些值(这是为了隐藏最终用户的一些代码)。服务器将在其中创建会话和存储值。这也意味着它会将会话ID存储在cookie中。

问题是,如果我在与php文件不同的域上运行,则cookie内的值不会被设置。例如:

这将有效:

Javascript address: "http://www.example.com/js/main.js"
PHP address: "http://www.example.com/php/main.php"

这将有效:

Javascript address: "http://example.com/js/main.js"
PHP address: "http://example.com/php/main.php"

这不起作用:

Javascript address: "http://example.com/js/main.js"
PHP address: "http://www.example.com/php/main.php"

这不起作用:

Javascript address: "http://www.example.com/js/main.js"
PHP address: "http://example.com/php/main.php"

我已经启用了CORS,并且PHP文件可以成功返回值,如果域名不同,则不会设置会话ID(不是' www&#39 ;实际上被视为不同的域...)。现在,我正在考虑强迫用户使用JavaScript转到目标网址。虽然这有效,但我觉得这更像是一个黑客而不是一个正确的解决方案,并寻找一个更清洁/正确的解决方案。

1 个答案:

答案 0 :(得分:0)

您需要在Set-Cookie标题中指定域名,例如

Set-Cookie: name=value; domain=example.com

显然,这只适用于同一域的子域,您不能在完全不同的域之间共享Cookie。更多示例here