项目场景:
# 项目场景:由于我的移动端项目是从微信那边获取的openId,在通过拿到openId获取人员信息,拿到openId只能在微信浏览器中打开,这就给我们调试造成了很大的困扰,不过我们PC端有登录接口,通过用户名密码可以拿到用户的信息,然后拿到cookie,在上移动端,通过cookie直接在我们自己服务上拿到信息,这就省略了从微信拿openId的步骤。
问题描述:
跨域cookie没种进去,请求也没携带cookie,如图
原因分析:
- 这里我们可以看到,响应头里返回了cookie 种在根路径下。
- 可以看到并没有202.114.114.70这个domain下的cookie,也就是说cookie没种上,因为我之前通过这种方式拿到cookie,今天突然不好使了我也很奇怪。
- 由于我之前更新了chrome,发现是chrome实现了cookie的一个SameSite属性的这么个标准,简单说sameSite是用来控制cookie在跨域时候的行为。具体请参考:
- 阮一峰Cookie的SameSite属性
- web.dev的SameSite
解决方案:
这回我们知道了是因为我更新了chrome,新版chrome实现了一个sameSite
属性的东西,导致跨域的cookie没种上。那么我们怎么解决呢。
其实我的想法很简单,出现这个问题是因为它实现了sameSite
和跨域了,那么我不跨域不就解决了么。
所以我在vue.congfig.js
配置了个代理,配置的很简单。
devServer: {
open: false,
disableHostCheck: true,
host: 'localhost',
port: 8080,
https: false,
hotOnly: false,
proxy: {
"/spp": { target: "http://202.114.144.70:9999" }
}
}
主要就是看proxy
,匹配到/spp
开头的请求,都会通过这个代理发送到202
上。有不懂devServer如何配的话可以去看一下webpack
的官网。或者点这里
proxy基础用法