微信小程序在发送请求时携带cookies问题

这篇具有很好参考价值的文章主要介绍了微信小程序在发送请求时携带cookies问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我在微信小程序的开发过程中发现如果使用wx.request请求时,请求数据传到后端后是不携带cookie的但是,原因是微信开发工具对wx.request进行修改需要经过微信服务器发送,那么我们后台服务就无法获取到cookie,有些时候也无可避免使用cookie做一些鉴权验证,那怎么办呢。

其实有两种解决方法

1.首先可以通过wx.setStorage将获取的cookie保存到本地

wx.request({
    url: "https://请求路径",
    method: "GET",
    data: {
        account: this.data.account,
        password: this.data.password
    },
    success: (res) => {
        //将请求的数据缓存起来
       wx.setStorage({
       key: 'cookie',
       data: res.cookies,
       success: function () {
          console.log('缓存数据到本地');
       }
    });
   }
})

        然后在调用请求时将刚才缓存的cookie数据丢到header里面一同发送到后台,同时后台再返回cookie继续作缓存

wx.request({
      url: "https://请求路径",
      method: "GET",
      header: {
        'content-type': 'application/json',
        'cookie': wx.getStorageSync('cookie').toString() // 设置cookie不使用tostring会出问题
      },
      data: {
        account: this.data.account,
        password: this.data.password
      },
      success: (res) => {
        wx.setStorageSync("cookie", res.cookies)
        console.log(res)
      }
})

后端代码:

@Autowired
StringRedisTemplate stringRedisTemplate;

@GetMapping("/admin/admingLogin")
    public Admin login(String account, String password, HttpServletRequest req, HttpServletResponse resp){
        String token= CookieUtil.getCookie("admin",req);
        if (token!=null){
            Admin admin= JSON.parseObject(stringRedisTemplate.opsForValue().get(token),Admin.class);
            if(admin!=null)
                CookieUtil.addCookie("admin", token, resp);
                return admin;
        }

        String uuid = String.valueOf(UUID.randomUUID());
        Admin admin = userMapper.login(account, password);
        if(admin==null) return null;
        String value = JSON.toJSONString(admin);
        stringRedisTemplate.opsForValue().set(uuid, value);
        CookieUtil.addCookie("admin", uuid, resp);
        return admin;
}


public static void addCookie(String tokenName,String val,HttpServletResponse resp){
        Cookie cookie=new Cookie(tokenName,val);
        cookie.setMaxAge(3000);
        cookie.setPath("/");
        resp.addCookie(cookie);
    }

第二种方法是使用第三方库weapp-cookie

npm install weapp-cookie --save

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

// tips: 使用 wepy/mpvue 可以直接在入口 js 引入 weapp-cookie 模块
// import 'weapp-cookie'

App({
    onLaunch: function () { }
    // ...
})

启动时可能会报没有定义的错误,请确保dist文件下存在weapp-cookie.js而不为weapp-cookie.es.js,位置完成后直接使用wx.request就能携带cookie请求了文章来源地址https://www.toymoban.com/news/detail-621009.html

到了这里,关于微信小程序在发送请求时携带cookies问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • postman请求携带Cookie

    本文提供一种让请求携带Cookie的高效解决方案,之前试过使用 Postman Interceptor 插件,但是刚开始配置完有效,过了一天后就失效了,所以自己去找其它方法实现了。 原文:语雀 **思路:使用环境变量 步骤 关闭自动生成的Cookie头 设置环境变量 把环境变量添加到请求参数中(

    2024年02月11日
    浏览(39)
  • selenium携带cookies启动,请求

    一,携带本地缓存cookies启动 1,第一次启动先手动在要请求的网页输入账号信息等 2,之后正常启动,请求目标网站会自动添加cookies 二,携带账号cookies启动 1, 先请求目标网站,保存cookies 2,先请求目标网站, 读取刚刚保存下来的cookies文件再次去请求目标网站 headers里的

    2024年02月12日
    浏览(41)
  • Angular:跨域请求携带 cookie

    1. 新建文件夹 http-interceptors 2. 新建拦截器 common.interceptor.ts 3. 用一个数组汇总起来,统一引入: index.ts (后续需要添加拦截器,只需加入到该数组即可) 4. 引入拦截器使用: service.module.ts

    2024年01月23日
    浏览(52)
  • 前端为什么发请求没有携带cookie?

    在前端发送请求时,如果想要携带 cookie,通常只能携带存储在与请求域名相同路径的 cookie。这是由浏览器的同源策略所决定的。 同源策略要求请求的域名、协议和端口都必须一致,否则浏览器会限制跨域请求的权限。当浏览器发送跨域请求时,默认情况下不会自动携带 co

    2024年02月06日
    浏览(92)
  • axios跨域请求设置并携带Cookies

    书接上回:《axios转发/oauth/authorize未设置cookies问题》 上回实现了axios 在client域名下情趣oauth域名并使response返回Set-Cookies的header 但是,接下来在域名oauth.szile.com域名下请求接口时,请求没有携带设置的Cookie,这是问什么? 难道是没有设置成功? 查看Application下Cookie,确实是没

    2024年02月04日
    浏览(46)
  • 浏览器对跨域请求携带Cookie的方法

    企业开发时会分开发环境、测试环境以及生产环境,但是有的企业开发只有真正发布到线上的生产环境的流程才会严格配置,有的项目开发环境或者测试环境中,前后端配置没有特别严格要求,就导致前端请求发送时返回错误信息。比如项目发送了一个跨域请求,该请求需要

    2024年02月16日
    浏览(50)
  • 微信小程序 使用cookie

    #####微信小程序没有cookie!!! #####微信小程序没有cookie!!! #####微信小程序没有cookie!!! #####但是 在开发中我们需要获取到后端给的cookie进行身份验证,由于微信没有给我们保留cookie。那就需要我们自己去存储cookie,并且在请求的时候加上cookie。 首先登录成功后,返回

    2024年02月12日
    浏览(27)
  • postman:模拟发送一个需要 cookie 认证的请求

    目录 前言: 1、chrome 已安装插件 intercept。 2、chrome 浏览器要设置打开,在运行期间浏览器要一直打开。

    2024年02月16日
    浏览(39)
  • Uni-app微信小程序跨域set-cookie

    今天在搞小程序验证时想把jwt token验证换成cookie验证,却碰到了一个问题,小程序跨域不支持保存cookie。 可以看到响应头中set-cookie出现警告,并提示 This Set-Cookie was blocked because it had the \\\"SameSite=Lax\\\" attribute but come from a cross-site response which was not the response to a top-level navigation 告

    2024年01月16日
    浏览(35)
  • golang发送get请求的各种操作:自定义header请求头、带cookie请求、channel并发请求

    请求参数放到url.Values{} 接收文件–ioutil.WriteFile 接收文件–io.Copy

    2024年02月06日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包