Mac 解决跨域问题及Cookie处理 -- 终极解决方案

当访问的的服务器不地址不在本地时,会触发Chrome的安全机制,即出现跨域问题(访问的域名需要和当前域名一致)。

通常的解决方案有两种:

1.前端通过代理解决
通过配置前端代理,使接口通过代理服务器转发从而避免触发安全机制。或者配置前端Nginx(该方案笔者未验证)。

2.后端通过特殊配置
后端通过给http协议头添加一些字段,这些字段表示允许跨域。来间接的解决问题。比如在node中express框架,提供了一个这样的中间件解决问题CORS。

最近重新运行项目时发现解决方案1失效(原因未知),找寻其他方案无果后决定修改Chrome安全策略,一劳永逸。


解决不了问题就解决提出问题的人

终极解决方案:修改安全策略

第一步:

任意地方创建名为MyChromeDevUserData文件夹,用于保存数据。

第二步:

命令行输入open -n /Applications/Google\ Chrome.app/ --args --disable-web-security --user-data-dir=XXX
其中XXX是刚才的文件夹地址,把文件夹拖到命令行中就会自动显示地址。

注意,此时的命令是打开 临时 关闭了安全策略的Chrome应用,原来的Chrome不受影响,不使用了关闭这个Chrome即可,无需重新恢复安全策略。下次再想用重新按照命令启动即可。

第三步:

处理Cookie,如果项目中不使用Cookie则不需处理(浏览器会默认处理http在header中添加的setCookie字段,并在发起请求时带上,常见的使用场景是验证码图片)。

地址栏输入chrome://flags/打开设置,搜索SameSite
修改 SameSite by default cookies 为 disabled,
修改 Cookies without SameSite must be secure 为 disabled,
修改完成后右下角会弹出一个Relaunch按钮,点击即可。

注意,这个设置是全局配置的,也会在原来的Chrome上生效,所以使用完后需要修改为原来的值default

你可能感兴趣的:(Mac 解决跨域问题及Cookie处理 -- 终极解决方案)