今天在搞小程序验证时想把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
告诉我们cookie因为跨域设置失败了。。
看了一下uniapp的官方文档uni.request(OBJECT) | uni-app官网
发现小程序并不支持set-cookie。
- 注意小程序端不支持自动保持 cookie,服务器应避免验证 cookie。如果服务器无法修改,也可以使用一些模拟手段,比如这样的工具https://github.com/charleslo1/weapp-cookie 可以请求时带上 cookie 并将响应的 cookie 保存在本地。
至此官方已经给了我们解决办法,就是通过weapp-cookie重写request请求。
weapp-cookie使用也非常简单
npm install weapp-cookie --save
# 将 npm 包复制到 vendor 文件夹,避免小程序可能不能找到文件(Tips:支持npm包的开发环境无需此步)
cp -rf ./node_modules/ ./vendor/
// app.js
import './vendor/weapp-cookie/dist/weapp-cookie'
// tips: 使用 uni-app/wepy/mpvue 等支持npm包的环境可以直接在入口 js 引入 weapp-cookie 模块
// import 'weapp-cookie'
App({
onLaunch: function () { }
// ...
})
导入后不用设置任何东西,请求会自动带上cookie文章来源:https://www.toymoban.com/news/detail-795564.html
文章来源地址https://www.toymoban.com/news/detail-795564.html
到了这里,关于Uni-app微信小程序跨域set-cookie的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!