session取不到值的問題

現象:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章