ajax --- 解決ajax跨域請求導致session失效的問題


起因:http是無狀態的,因此我們通常需要用到cookie以及session來保存狀態,session是在服務器端存儲的,會和cookie一起使用,設置了session之后,會發送給瀏覽器一個cookie,這個cookie是session_id,當再次請求的時候瀏覽器會將它發送給服務器,以此來找到對應的session.
但是,我們實際使用的時候通常會用到跨域,就是向不同的域發起請求,但是默認情況下此時cookie是不會發送給服務器的,此時就導致了丟失session_id,從而導致了session的值為undefined。解決方案如下:
首先,前端頁面發起ajax請求時,加上參數:

withCredentials: true,

像這樣

$.ajax({
    type:
    url:'http://localhost:8080/user-login',
    data:
    dataType:'JSON',//注意哦,這一句要記得加上哦,我就是因為沒加這句還查了好久的
    withCredentials: true,
    success:
    error:
})

我使用的后台語言是node.js,在node.js中使用cors跨域 
在app.js中加上(注意接口的順序哦):

app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "這里填可以跨域訪問的域,不能填*哦");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By",' 3.2.1');
    res.header("Access-Control-Allow-Credentials",true);
    res.header("Content-Type", "application/json;charset=utf-8");
    next();
});

  ok,和bug一站到底,加油


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM