收藏
回答

发起wx.request时,服务器端的session丢失是怎么回事?

Nginx服务器,PHP程序,

1. 生成随机字符串$session_me;

2. 将openid等信息保存在session中,$_SESSION[$session_me] = $session_key + $openid

3. 将$session_me与session_id()返回小程序客户端,并保存;

4. 小程序向服务器端发起请求:

    wx.request({ 

      url: requestUrl + '/index.php', 

      data: { sid: wx.getStorageSync('session_me') }, 

      header: { 

        'content-type': 'application/x-www-form-urlencoded', 

        'Cookie': 'PHPSESSID=' + wx.getStorageSync('session_id') 

      }, 

      method: 'POST', 

      ......

5. 服务器端的PHP程序中发现$_SESSION[$session_me]为空??

6. 之前跑了很久一直很稳定,怎么突然出现这样的问题?

最后一次编辑于  2022-01-12
回答关注问题邀请回答
收藏

2 个回答

  • 小程序技术专员-binnie
    小程序技术专员-binnie
    2021-05-14

    小程序检查下是否保存成功?

    2021-05-14
    有用 1
    回复 1
    • 武悦
      武悦
      2022-01-11
      不管是客户端还是服务器端都保存成功了。
      2022-01-11
      回复
  • 武悦
    武悦
    2022-01-11
    1. header:
    2. Cache-Control"no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
    3. Connection"keep-alive"
    4. Content-Type"text/html; charset=UTF-8"
    5. Date"Tue, 11 Jan 2022 14:15:19 GMT"
    6. Expires"Thu, 19 Nov 1981 08:52:00 GMT"
    7. Pragma"no-cache"
    8. Server"nginx/1.16.1"
    9. Transfer-Encoding"chunked"
    10. X-Powered-By"PHP/5.6.32"

    从服务器端返回的打印信息来看,$_SESSION为空,这是sessionid失效了?通过Cookie上传PHPSESSID出了问题,还是上面打印信息的第6行Expires提示的session过期了?重启了nging和php-fpm,错误依旧。。。


    另外,在服务器端的/tmp目录下,每隔一分钟会生成一个session文件:

    -rw-------   1 root      0 1月  11 23:51 sess_b0j6rvrs7h1rgt5dmm9i095ig6

    -rw-------   1 root      0 1月  11 23:52 sess_ob6j39bj8c51gaaltot4r533n2

    -rw-------   1 root      0 1月  11 23:53 sess_47dg66gdk9lfgekh8j3pi69725

    查看服务器端返回的sessionid,确实是没有对应的session文件。是nginx出了什么问题?

    2022-01-11
    有用
    回复 1
    • 武悦
      武悦
      2022-01-13
      磁盘满
      2022-01-13
      回复
登录 后发表内容