谷歌浏览器 跨域遇到的坑 cors 错误(亲测可行)

浏览器版本:

一.现象:

 

解决方案:

方案一:(已论证)

 步骤1: 谷歌浏览器 打开 chrome://flags/#block-insecure-private-network-requests
步骤2 : 找到 Block insecure private network requests. 设置为Disabled
步骤3 : 关闭谷歌浏览器重新打开网页 解决问题。


方案二:(未论证)
或者 访问使用https 的代替http 的

==================经过==================

1. get 方式请求json,前端调用返回cors error

2.jsonp 方式 :http:xxx.com?callback=callback 还是报错cors 

3.最后在同事帮助下,发现谷歌的大bug,参考上面方式或更换火狐或其他浏览器都可以

4. 最后的最后,一切都是尴尬,因为本地绑定了host IP:www.***.com ,相当于拿着ip去访问nginx 服务器,怎么会不产生跨域呢?无论怎么设置都无效的,去掉 这条 host 就好 

补充:

首先,客户端通过域名请求服务,如果你在本地的hosts文件中配置了该域名与ip的映射关系,那么,请求就会直接发送到hosts文件中对应的ip,不会通过dns解析(如果本地hosts文件中没有配置,就会通过dns解析域名)。


这时,请求到达了服务端,服务端的nginx拦截了该请求,然后在本地通过域名匹配server_name,然后,根据proxy_pass返回相应的服务给客户端。

本地host文件和nginx映射的关系

假设客户端A--------》浏览器url请求域名--------》域名被host解析对应的IP--------》到对应IP的服务器--------》先被nginx反向代理拦截--------》找到nginx上一样域名(nginx.conf配置文件中server里的server_name)--------》对应的反向映射地址(nginx.conf配置文件中同左server里的proxy_pass 就是对应的Tomcat里WEB的发布路径如 http:localhost:8080)--------》对应8080端口的项目

参考;chrome94+版本出现的跨域问题及解决方案

posted @ 2022-01-26 18:11  码农编程进阶笔记  阅读(9931)  评论(0编辑  收藏  举报
返回顶部 有事您Q我