我有一个域名,example.com。在这个域上,我有两个子域,code.example.com和www.example.com.
我的php.ini文件中有以下一行:session.cookie_domain = ".example.com"
如果我在code.example.com上有一个简单的PHP页面来设置PHP变量,那么www.example.com上的页面可以读取该会话变量。
code.example.com/test.php
session_start();
$_SESSION["testa"] = "a";www.example.com/test.php
session_start();
echo("session testa = " . $_SESSION["testa"]);这是被证实的和有效的。它正确地响应,会话testa = a。
但是,如果我做同样的事情,但是这次如果我在www.example.com上有一个通过AJAX调用code.example.com/test.php的页面,当我在www.example.com/test.php,上读取session变量时,它会失败。会话变量不存在。
我通过使用Firefox中的Network > Cookies开发工具来跟踪这一点。我可以确认会话I确实不同,在通过AJAX执行此操作时没有正确传递。
在我的AJAX调用中,我有crossDomain: true,在我的header("Access-Control-Allow-Origin: *");文件中,有header("Access-Control-Allow-Origin: *");集。
我真是不知所措。
我所说的修改php.ini文件的所有搜索。但是,我已经做到了。跨域会话确实有效。只是不是通过AJAX调用的。
任何想法都会受到极大的赞赏。
谢谢!
发布于 2019-01-26 06:04:00
不包括“.”在顶级域名前面。此外,httprequestobject需要( bool ) obj.withCredentials = tree;用于对象访问跨域cookie。
https://stackoverflow.com/questions/54375807
复制相似问题