【php】ajax請求介面的cookie問題
阿神
阿神 2017-05-16 12:03:02
0
2
358

場景:比如說現在有兩個接口,用戶登入接口a,和獲取用戶資訊接口b。瀏覽器呼叫完全沒有問題,現在要用jq的ajax呼叫這兩個接口,就出問題了。

  1. 先說瀏覽器。
    我在瀏覽器輸入登入介面a位址,傳遞參數,登入成功。服務端(php)將我的​​用戶id,用戶名等存在session裡。接下來請求獲取用戶資訊介面b,伺服器直接從session裡找到用戶信息,返回瀏覽器,成功!

  2. 再說 ajax。
    我在js裡用ajax調用登入接口,返回成功訊息,登入成功。同樣sesion裡存了用戶資料。但是我接下來用ajax呼叫取得使用者資訊介面b的時候,就出問題了,提示session找不到。

我在控制台裡看了下,瀏覽器登入成功之後,在回應頭裡會返回set-cookie的信息,下一次請求同一域名下的接口,會自動在請求頭中發送cookie,從而取得伺服器中session的資料。

在ajax請求的情況下,登入成功同樣會在回應頭裡會返回set-cookie的訊息,可是下一次請求同一網域下的接口,卻不會自動傳送cookie,所以找不到伺服器的session資料。

那麼問題來了:
我若想拿到session數據,在ajax請求時,是要手動發送cookie嗎?如果不是,怎麼拿到session資料?

求大神解答!

阿神
阿神

闭关修行中......

全部回覆(2)
黄舟

ajax 请求添加参数 xhrFields: { withCredentials: true },

php 設定header('Access-Control-Allow-Credentials:true');

巴扎黑

session是依賴cookie的,你伺服器中的cookie存到哪裡了?

就算是你把你客戶端的瀏覽器中的cookie傳過去了,和伺服器中的cookie是否一致啊?

所以說在伺服器中村session就是不行的,你只能是用token來做,而且後台儲存資訊要用redis什麼的。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板