微信公众号使用云开发Web API中 "__wx__/oauth" 302 Set-Cookie无效
相关文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/web/third-party-cookie.html 问题描述: 微信返回的https://example.com/__wx__/oauth这个链接无法设置Cookie,如果在checkLogin中将ignoreUrl设置为false将无法成功验证登录。 详细描述(附上原因和参考方案): 根据官方文档,云开发Web API 在startLogin逻辑中,会从https://example.com/__wx__/oauth连接跳转之前指定的redirectUri。微信的服务器会返回HTTP GET 302 的结果,并带有设置Cookie的Header。 [图片] 但是我们本地开发测试的是否发现这个请求结束之后,本地并不会存在Cookie [图片] 经过我们的调查发现,这个问题的原因是"浏览器会忽略 HTTP 302 中的Set-Cookie" 我们的网站使用hash router,也就是url是https://a.com/#/pages/index/index?a=b这样的形式,登录之后会成为https://a.com/?access_token=token#/pages/index/index?a=b这样的。这会导致checkLogin无法从url中获取token,导致登录失败。 参考方案: 可以考虑将登录成功后的https://example.com/__wx__/oauth返回结果改成HTTP 200。通过HTML的方式进行跳转,利用js或者meta refresh等。 --- 参考链接: https://bugs.chromium.org/p/chromium/issues/detail?id=696204 https://blog.dubbelboer.com/2012/11/25/302-cookie.html https://stackoverflow.com/questions/4694089/sending-browser-cookies-during-a-302-redirect