小程序不支持cookie-平板微信不支持小程序
实际案例:
公司计划在小程序中嵌套H5页面,希望在小程序中调用api(wx.request()),然后在server端通过api的header设置cookie。 因为cookie都是通过http来设置或者携带的,所以我觉得这样就可以把小程序请求的API中设置的cookie通过http请求(xhr或者fetch)带入web-view中。 事实证明太年轻太天真了。 小程序不能将 cookie 设置为 web-view。
为什么小程序和网络视图不能共享 cookie
小程序的wx.request()是通过jsCore调用系统原生API发起的请求。 即使header中包含set-cookie,也不会在web-view对应的'browser'中设置cookie,但是native application会如何处理这个header中的set-cookie取决于native application。
更有意思的是,小程序中的web-view和微信中直接打开的h5使用的是同一个浏览器内核,所以它们的cookies和storage是可以共享的。
web-view 中的页面如何在 applet 中使用 cookie
wx.request会返回http头小程序不支持cookie,得到Set-Cookie字段,然后用encodeURIComponent编码小程序不支持cookie,通过url传递给web-view,在web-view中得到url中的cookie值,通过document.cookie赋值.
如何在小程序中支持 cookie
这里是一个支持微信、今日头条、百度、支付宝小程序的组件。 git仓库地址如下:.
教程:
npm install weapp-cookie --save # 将 npm 包复制到 vendor 文件夹,避免小程序可能不能找到文件(tips:使用 wepy/mpvue 等框架无需此步) cp -rf ./node_modules/ ./vendor/ // app.js import './vendor/weapp-cookie/dist/weapp-cookie' // tips: 使用 wepy/mpvue 可以直接在入口 js 引入 weapp-cookie 模块 // import 'weapp-cookie' App({ onLaunch: function () { } // ... })
原有的wx.request调用方式不变。 引入后weapp-cookie会在底层自动代理wx.request接口访问,支持cookie的存储和发送