微信小程序開發,請求服務器API的方法使用的是微信官方提供的wx.request()方法。在開發中發現,每一個請求都會生成一個獨立的PHPSESSID,如下圖示:
搜索后得知,這是由于wx.request()造成的。如果直接使用瀏覽器請求并不會出現這種情況。
解決方式如下:
通過登錄接口獲取到用戶的session_key 和 open_id,設置session信息如下:
$3rd_session = md5(session_key . $open_id) $_SESSION[$3rd_session ] = session_key . '|' . $open_id;
服務器生成此用戶的session_id,接口返回 3rd_session 和 session_id。
在其他接口請求中,在header中設置cookie的值:session_id:
header = header || { 'content-type': 'application/x-www-form-urlencoded;', 'Cookie': 'PHPSESSID=session_id值' }
并在接口中帶上參數session=3rd_session,此時服務端獲取到的就是同一個session_id,根據3rd_session從$_SESSION得到用戶的openid