解决小程序无法触发SESSION问题

一、首先找到第一次发起网络请求的地址,将服务器返回set-cookie当全局变量存储起来

wx.request({
  ......
  success: function(res) {
    console.log(res.header);
    //set-cookie:PHPSESSID=ic4vj84aaavqgb800k82etisu0; path=/; domain=.fengkui.net

    // 登录成功,获取第一次的sessionid,存储起来
    // 注意:Set-Cookie(开发者工具中调试全部小写)(远程调试和线上首字母大写)
    wx.setStorageSync("sessionid", res.header["Set-Cookie"]);
  }
})

  

二、请求时带上将sessionid放入request的header头中传到服务器,服务器端可直接在cookie中获取

wx.request({
  ......
  header: {
    ‘content-type‘: ‘application/json‘, // 默认值
    ‘cookie‘: wx.getStorageSync("sessionid")
    //读取sessionid,当作cookie传入后台将PHPSESSID做session_id使用
  },
  success: function(res) {
    console.log(res)
  }
})

  

三、后台获取cookie中的PHPSESSID,将PHPSESSID当作session_id使用

<?php
// 判断$_COOKIE[‘PHPSESSID‘]是否存在,存在则作session_id使用
if ($_COOKIE[‘PHPSESSID‘]) {
    session_id($_COOKIE[‘PHPSESSID‘]);
}

session_start();
echo session_id();

  

wx.setStorageSync(string key, any data)
将数据存储在本地缓存中指定的key中。会覆盖掉原来该key 对应的内容。
any wx.getStorageSync(string key)
从本地缓存中异步获取指定key的内容

原文地址:https://www.cnblogs.com/LQZ888/p/12188244.html

时间: 2024-11-05 18:43:03

解决小程序无法触发SESSION问题的相关文章

解决小程序sessionid不一致

由于小程序端两次请求的 sessionid 不一致, 导致后端无法取得 session,解决办法:在登录时获取sessionid //第一次请求登录接口时保存到sessionid中 success: function (res) { wx.hideLoading(); wx.removeStorageSync('sessionid');//每次登录时清楚缓存 if (res.data.code == "0000") { if (res.data.data.roleList[0].val

[解决]小程序要求的 TLS 版本必须大于等于 1.2

今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2 查官方文档 解决方法 在 PowerShell中运行以下内容, 然后重启服务器 # Enables TLS 1.2 on windows Server 2008 R2 and Windows 7 # These keys do not exist so they need to be created prior to setting values. md "HKLM:\SYSTEM\Cur

解决小程序渲染图片出现403的问题

拿了一张小程序报403错误,但浏览器可以访问的图片 为什么会出现这个问题?再去翻一下官方文档,了解一下组件image的运行.花了点时间了解下,访问图片资源是带有防盗链(referrer)的. 总之,访问别人服务器时,连本地的防盗链(referrer)也携带了过去.携带了防盗链,别人的服务器就会对此做相关处理,看看是不是本站在访问,否则给个403. 解决403的方法,就是不要设置防盗链.可是我不会设置referrer,也不知道有没有.所以就换了个方法,换一个链接可以访问图片的链接: 可以使用ima

解决小程序报错 Page &quot;pages/index/main&quot; has not been registered yet.

在小程序开发中,会频繁遇到  Page "pages/index/main" has not been registered yet.   这种报错,意思就说指定的页面没有注册,找不到.遇到这种问题很可能不是代码问题,解决起来也真的是浪费时间,下面我介绍两种方式. 方法一:从源头处解决 产生这种现象的原因就是我们在新添加某些页面的时候为了图省事.方便,直接到文件夹中复制.粘贴.改文件名.通过这种方式创建页面就有很大几率报错,所以从源头解决的话,就是按照下图所示在项目目录中新建文件夹.文

解决小程序中 cover-view无法盖住canvas的问题,仅安卓出现这个问题

原因在于系统页面渲染的差异,在安卓中页面dom的渲染并不是完成按照上下顺序来的, 有可能出现写在后面的dom被先渲染出来,因此会随机出现能盖住.不能盖住的情况,很诡异是不是? 开发者工具中并非真机,只是模拟显示,调整时显示正常不代表真机中正常 解决方式很简单: 将cover-view的渲染延迟一些,例如设定500ms后显示 此问题在页面调用echarts时出现,而echarts用的是canvas实现,希望对你有帮助! 原文地址:https://www.cnblogs.com/magicc/p/1

完美解决小程序一维数组循环渲染列表不够用问题

<view class="local" id="{{itemName.id}}" data="{{itemName.name}}" class="list" bindtap='fastSearch' wx:for="{{getSearch}}" wx:for-index="" wx:for-item="itemName" wx:key=""&

解决小程序中Data.parse()获取时间戳IOS不兼容

由于与后台接口必须对比时间戳所以首先得前台获取时间戳.刚开始是获取手机本地时间,但用户改了时间就废了..... 后来就从服务器上获取个时间再转换为时间戳(是不是很操蛋,先从服务器上获取在TM的自己比较),但后台直接给我一个时间戳不就完事了么, 还就给我一个时间自己转然后问题就来了. [csharp] view plain copy var resData = '2017-3-14 10:03:45' console.log("返回时间:" + resData) var time = D

微信小程序-双击长按longtap事件与tap事件冲突的解决办法

对于微信事件,不多说,自己看文档https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/event.html?t=20161122 效果 首先,注意一下微信小程序事件触发顺序     单击 touchstart → touchend → tap 双击 touchstart → touchend → tap → touchstart → touchend → tap 长按 touchstart → longtap → touche

微信小程序里解决app.js onLaunch事件与小程序页面的onLoad加载前后异常问题

使用 Promise 解决小程序页面因为需要app.js onLaunch 参数导致的请求失败 app.js onLaunch 的代码 1 "use strict"; 2 Object.defineProperty(exports, "__esModule", { 3 value: true 4 }); 5 const http = require('./utils/http.js'); 6 const api = require('./config.js'); 7