记录一次解决后端接口设置cookie设置不上去经过,一级域名可以设置上去cookie,二级域名设置不上cookie
前言:
公司的一个 web 端项目,项目放在一级域名的某一个目录下方
访问的时候需输入 一级域名+目录+index.html,这个 index.html 是因为服务端人员没配置默认访问 index.html 所以需要加上
领导说这个太麻烦,于是弄了个二级域名,直接指向项目目录的 index.html
接口地址:一级域名+接口
登录之后接口会设置 cookie ,每次请求都携带 cookie
OK,项目基本就这样了,现在说情况:
使用一级域名访问项目,谷歌调试,cookie 存在,项目正常
使用二级域名访问项目,谷歌调试,cookie 不存在,项目异常
查看二级域名访问请求头,发现请求地址是一级域名,很明显的跨域问题造成的,后台设置的 CORS,前台 axios 设置 withCredentials 为 true,并且前台请求的时候,域名直接写死的一级域名
由于项目不归我负责,服务端伙计也在忙别的事儿,让人帮忙测试找 BUG 有点慢,所以自己用 nodejs 临时写了一个服务端,模拟它的跨域设置 cookie 情况得知
Access-Control-Allow-Origin 不能直接用 *
Allow-Origin 的地址前台可访问地址必须一模一样,域名(IP)+端口号
OK,正常来讲这两个设置好之后,应该能设置上 cookie,但是还是设置不上去,报的是 sameSite 为 none 这个警告,查了一下发现这个是 谷歌浏览器 更新到 80 版本之后加上的,测试:
- 找一个 50+ 的版本试了一下,能设置上去,但是得用户给浏览器降级, PASS 掉
- Chrome 中打开 chrome://flags/#same-site-by-default-cookies 和 chrome://flags/#cookies-without-same-site-must-be-secure,并设置为 Enabled,重启浏览器,可以,但是得用户改浏览器设置,PASS掉
- 前台 VUE 项目开启 https ,成功,这个可以实施,但是 http 的不行有点不完美
梳理项目需求:
一级域名可以访问,二级域名也可以访问,接口地址在一级域名,所以那个前端小伙子将接口地址写死了,为的是用二级域名访问的时候,正常访问一级域名的东西
OK 有思路了,能不跨域的问题,干嘛还跨域啊
前端将写死的域名干掉,默认当前域名就行
二级域名下的 nginx 配置一个 proxy_pass ,接口统一加上一个前缀, ex: manage/接口 ,manage 是识别当前请求的,使用 proxy_pass 代理到一级域名
注意:这个 proxy_pass=https://一级域名/ 最后的 / 斜杠 不能丢掉,因为接口直接在一级域名下边,不带 manage 这个前缀,proxy_pass 后面的域名加上 / 就代表着将匹配到的前缀干掉了,只要后面的接口location ^~ /manage {proxy_pass http://****.cn/; }
重新打包部署一下项目,用二级域名访问,也不跨域了,cookie问题解决了,http和https都没问题
新问题:
一级域名下边项目去登录,请求接口报 404
梳理一下:
接口是直接在一级域名下方,没有二级域名访问的时候所谓的前缀,而现在项目在一级域名下的前台访问接口的时候实际上是加上了 manage 前缀的,而一级域名下根本没有什么 一级域名/manage/接口地址 等等接口的
这样就简单了,一级域名同二级域名一样,做 rewrite ,或者做个 proxy_pass 就行了,将接口的前缀过就过滤掉了
配置好之后重启 nginx 就好了,现在该项目不存在跨域的问题了,也不用设置什么 CORS 了
记录一次解决后端接口设置cookie设置不上去经过,一级域名可以设置上去cookie,二级域名设置不上cookie相关推荐
- php 什么cms能让会员自已建个独立站并绑上二级域名?,CMS_帝国CMS使用二级域名并解决顶一下的方法,1、将2级域名解析指向到所在 - phpStudy...
帝国CMS使用二级域名并解决顶一下的方法 1.将2级域名解析指向到所在的空间,(可以用泛解析,如*.phpstudy.net A IP ,也就是A记录) 2.需要空间支持绑定到栏目所在的文件夹(如果是 ...
- QDUOJ二次开发记录(前端、后端)
QDUOJ二次开发记录(前端.后端) 一.开始前 QDUOJ是青岛大学开源的Online Judge系统,目前在Github上有3.8K个Star(截止至20.4.24),具有界面美观.部署简单(采用 ...
- 关于二级域名Cookie的问题及解决方法
今天博客园全面采用二级域名后,发现即使用户已经登录,但在访问二级域名Blog页面时都显示没有登录(表现为发表评论时要求输入验证码, 收藏功能无法正常使用),再次登录后,进入其他二级域名还是需要登录.在 ...
- NGINX免费配置二级域名及同时开启HTTPS(HTTP强制转HTTPS)nodejs的express后端项目,前端next.js的SSR项目
最近在做web3的创业项目,需要给第三方提供API接口需要配置二级域名:整个过程遇到了一系列问题都一一解决了,记录下整个过程: 二级域名是可以不开启HTTPS的,直接用HTTP也行,开启HTTPS后配 ...
- 不同域名cookie共享_cookie在二级域名间共享完成sso
单点登录(SingleSignOn,SSO)就是用户完成一次应用系统登录,便可以免登访问多个其它应用系统,这里所说的应用系统是相互信任的. 通常SSO都是企业内部多个应用之间,一个企业一般有一个顶级域 ...
- Shiro解决多个二级域名的单点登录问题
在项目中,可能会遇到多个系统同时开发一个项目,这时候项目上线会遇到一个问题,大家都是二级域名,但是shiro的cookie也在二级域名下,其他系统无法获取,导致无法登录并且无法调用其他系统的接口及数据 ...
- 顶级域名和二级域名共享cookie及相互删除cookie
在CSDN看到一个cookie设置domain时,如何删除的问题, 自己也只知道domain设置为顶级域名时可以被其他二级域名共享,但是如何删除还是有一点搞不清楚,所以特意测试了下cookie和dom ...
- 记录一次微信公众号开发遇到的问题,提示二级域名未备案
这个问题其实去年就遇到了,只是今年再次开发时想了半天才想起来这些问题,索性写下来记录一下,要是赶巧能帮到一两位程序猿同仁,就再好不过了. 前提: 公司主域名是在西部数码备案的,而且是用了很多年的,不存 ...
- (凯思奥2020-03月)问题记录3,GUI问题记录3 4,国际化异常,微信平台接入 = 数据库修改 + 自动化填充 + 前后端接口修正 + 联调测试问题 + 微信与数字账号绑定 + 思考+部署
问题记录3: 1. UserPage: 未登录状态(报解构异常),或直接登出再登录,没有获取用户数据. 2.WorkContentPage gui相关(大片红字报错)(国际化message类型问题) ...
- Nginx解决前端调用后端接口跨域问题
Nginx解决前端调用后端接口跨域问题 参考文章: (1)Nginx解决前端调用后端接口跨域问题 (2)https://www.cnblogs.com/wangymd/p/11200746.html ...
最新文章
- 详解Linux运维工程师打怪升级篇
- vim中开shell
- 每天在竞争中淘汰自己
- Log4Net配置使用简记
- 六角填数---第五届蓝桥杯
- Java游戏有易筋经_易筋经- JavaWeb-1
- phpexcel常见问题的解决办法
- 进入 App Store 打分
- hdu 5055 Bob and math problem
- AES加密算法介绍与实现
- 【转】android:windowSoftInputMode属性详解
- C++ unordered_map初始化
- Java旅游网站源码+页面
- 计算机时间与网络时间无法同步,电脑时间与网络时间不同步解决办法
- DER: Dynamically Expandable Representation for Class Incremental Learning翻译
- Redis伪集群搭建
- 关于jd-gui启动报This program requires Java 1.8+的错误
- php 抓取弹幕,php实现斗鱼弹幕,一起来欣赏弹幕吧~
- 【缺陷管理】9:偶尔出现的缺陷如何处理?
- i510400和i512400差距