微信小程序设置cookie

微信小程序设置cookie

微信对wx.request这个API做了修改,小程序发起的请求并不是直接请求我们的后台服务器,而是先通过微信的服务器再发送到我们的后台服务器,既然请求都是要通过微信的服务器发送到我们的服务器,那么我们的服务器也就无从识别请求的发起者了。因此,cookie在微信小程序的后台开发中是无法使用的

因为小程序不支持cookie,所以不能直接使用后台语言的session,那么解决这种情况的办法有两种:

1. 在登录请求后读取 返回值的, header的cookie,并本地存储

//登录请求回来之后,读取res的header的cookie
//cookie是个唯一标识
 wx.setStorageSync("cookie", res.header["Set-Cookie"])

在下一次请求的时候设置header,并写入cookie

//创建header 
var header;
header = { 
    'content-type': 'application/json', 
    'cookie':wx.getStorageSync("cookie")//读取cookie
};
  //进行请求,一般外层都有一个封装,然后放在公共类里边
wx.request({
    url: URL,
    method: method,
    header: header,//传在请求的header里
    data: datas,
    success(res) {
    //请求成功的处理

    }
)}

2. 使用第三方库weapp-cookie

这个库可以为你的小程序实现 Cookie 机制,以保证基于 cookie 的服务会话不会失效,与 web 端共用会话机制

  • Install

    npm install weapp-cookie --save
    
    # 将 npm 包复制到 vendor 文件夹,避免小程序可能不能找到文件(tips:使用 wepy/mpvue 等框架无需此步)
    cp -rf ./node_modules/ ./vendor/
    
  • Usage

    // app.js
    import './vendor/weapp-cookie/index'
    
    // tips: 使用 wepy/mpvue 可以直接在入口 js 引入 weapp-cookie 模块
    // import 'weapp-cookie'
    
    App({
        onLaunch: function () { }
        // ...
    })
    
    

    原来的 wx.request 调用方式保持不变,引入后 weapp-cookie 会在底层自动代理 wx.request 的接口访问,以支持 cookie 存储和发送

    // pages/index/index.js
    
    Page({
        onLoad: function () {
            wx.request({
                url: 'https://example.com/login',
                data: {
                    username: 'admin',
                    password: '123456'
                },
                success: function (res) {
                    /*
                     * 接口调用成功后 weapp-cookie 会自动保存后端发送的所有Cookie(比如:SessionID)
                     * 并在后续的所有请求中带上,以保证基于 cookie 的服务器会话机制不会失效,
                     * 实现与 web 端共用会话机制(无需再手动维护 3rd_session_key) 
                     */
                }
            })
        }
    })
    
    

参考:
一行代码让微信、头条、百度、支付宝小程序支持 cookie
微信小程序设置cookie

你可能感兴趣的:(系统分析作业,微信小程序)