現象:
框架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去解決 這裏就不多說了 網上有的是