现象:
框架TP3.2.3 后端提供接口 供前端ajax调用 前后端不再同一个服务器上
1.会有跨域问题
解决 :每个接口文件在__construct 方法 添加header头 允许跨域
header("Access-Control-Allow-Credentials: true");//配合前端携带相同的sessionid header('Content-Type:text/html;charset=utf-8'); // 指定允许其他域名访问 header('Access-Control-Allow-Origin:*'); // 响应类型 header('Access-Control-Allow-Methods:POST'); // 响应头设置 header('Access-Control-Allow-Headers:x-requested-with,content-type');
2.这个是比较不好找的问题 本来开始以为是后端问题 一直再找后端问题 怎么改都不成 连php.ini都改了都不行 改的session.use_trans_sid=1 还是不行
后来自己本地写ajax去请求远程服务器的登录接口 登录成功后存储响应session信息 然后打印能后打印到 说明存储成功 并且在服务器也生成了对应的sessionID文件 默认在服务器根目录的tmp文件夾下 如果向修改存储目录 在对应项目的config.php 增加
'SESSION_OPTIONS' => array('path'=>'/data/..')
然后在其他接口去请求打印session就拿不到信息 然后查看这两次的response headers 每次请求都不一样 这就是拿不到session信息
的原因了
所以在ajax增加
// 允许携带证书 xhrFields: { withCredentials: true }, // 允许跨域 crossDomain: true,
在后端增加header头
header(
"Access-Control-Allow-Credentials: true"
); 验证证书 从此问题就解决了
2也可以用jsonp去解决 这里就不多说了 网上有的是