我目前正在制作一个网页游戏,它连接到服务器上的一个php文件来获取某些值(这是为了对最终用户隐藏一些代码)。服务器将创建会话并在其中存储值。这也意味着它将在cookie中存储会话Id。
问题是,如果我在与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‘被视为不同的域...)。现在,我正在考虑强制用户使用JavaScript转到预期的url。虽然这很有效,但我觉得这更像是一种黑客攻击,而不是一种适当的解决方案,并在寻找一种更干净/适当的修复方法。
发布于 2015-09-03 14:02:12
您需要在Set-Cookie标头中指定域,例如
Set-Cookie: name=value; domain=example.com显然,这只适用于相同域的子域,您不能在完全不同的域之间共享cookie。更多示例here。
https://stackoverflow.com/questions/32367936
复制相似问题