谷歌瀏覽器 跨域遇到的坑 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+版本出現的跨域問題及解決方案


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM