【转】谷歌浏览器 跨域遇到的坑 cors 错误(亲测可行)本地host文件和nginx映射的关系

浏览器版本:

谷歌浏览器 跨域遇到的坑 cors 错误(亲测可行)本地host文件和nginx映射的关系_客户端

一。现象:

谷歌浏览器 跨域遇到的坑 cors 错误(亲测可行)本地host文件和nginx映射的关系_客户端_02
谷歌浏览器 跨域遇到的坑 cors 错误(亲测可行)本地host文件和nginx映射的关系_nginx_03

 

解决方案:

方案一:(已论证)

谷歌浏览器 跨域遇到的坑 cors 错误(亲测可行)本地host文件和nginx映射的关系_node.js_04

 步骤 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, 参考上面方式或更换火狐或其他浏览器都可以

  1. 最后的最后,一切都是尴尬,因为本地绑定了 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 端口的项目

原文地址:谷歌浏览器 跨域遇到的坑 cors 错误(亲测可行)本地 host 文件和 nginx 映射的关系【图文】_码农编程进阶笔记_51CTO 博客

暂无评论

发送评论 编辑评论


				
上一篇
下一篇