在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  HTML/ 登錄成功后,再請求后端接口,返回未登錄發(fā)現(xiàn)session id 變了

登錄成功后,再請求后端接口,返回未登錄發(fā)現(xiàn)session id 變了

我最開始請求登錄接口,登錄成功后,再請求數(shù)據(jù)接口,返回未登錄。
于是我把登錄接口跟數(shù)據(jù)接口脫離項目,放一個單獨的html文件中,然后測試發(fā)現(xiàn)請求是成功的,session id是一致的;
然后項目中的數(shù)據(jù)接口也能請求成功了,但等登錄時效一過,項目中的數(shù)據(jù)接口又返回未登錄了;
只要我把單獨的html(包含登錄接口與數(shù)據(jù)接口)刷新,項目中的數(shù)據(jù)接口就能請求成功

后臺是java

我在網(wǎng)上查了很多資料,基本上與我的情況不一樣。
后也嘗試過是不是因為異步的原因,用setTimeout來延時數(shù)據(jù)接口,但也沒有成功

$.ajax({
    url:'http://server/admin/login',
    type:'post',
    data:{username:'xxx',pw:'xxx'},
    xhrFields: {
        withCredentials: true
    },
    crossDomain: true,
    success:function(res){
        console.log(res)
        //登錄成功
    }
})
setTimeout(function(){
    $.ajax({
        url:'http://server/admin/getData',
        type:'post',
        data:{id:'10031',coin:'$',amunt:'1000'},
        xhrFields: {
            withCredentials: true
        },
        crossDomain: true,
        success:function(res){
            console.log(res)
            //這時后端返回的狀態(tài)碼是未登錄
            //查看sessionid時發(fā)現(xiàn)跟登錄時的sessionid不致
        }
    })
},2000)

不知道為什么把登錄接口與數(shù)據(jù)接口單獨拿出后就能請求成功,而在項目中卻返回未登錄,session id 改變?

回答
編輯回答
情皺

因為你跨域了,所以你session_id改變,因為你讀取不到cookie啊,2個解決辦法:
1.后臺接口采用jwt認(rèn)證
2.后端設(shè)定允許跨域讀取cookie,以下東西在后端實現(xiàn)

header('Access-Control-Allow-Origin:前端域名');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept,X_Requested_With, x-xsrf-token");
header('Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS');
header('Access-Control-Allow-Credentials: true');

$.ajax增加

beforeSend: function(xhr) {
    xhr.withCredentials = true;
}
2018年2月10日 03:19