調用方解決跨域的方法只有一種,那就是隱藏跨域。 何為隱藏跨域? 隱藏跨域的核心思路是通過反向代理隱藏跨域以欺騙瀏覽器 什麼是反向代理?反向代理是指通過中間伺服器使得訪問同一個功能變數名稱的兩個不同url最終會去往兩個不同的伺服器 一:反向代理 - Nginx配置 在之前的被調用方解決跨域中,訪問的請求是絕對 ...
調用方解決跨域的方法只有一種,那就是隱藏跨域。
何為隱藏跨域?
隱藏跨域的核心思路是通過反向代理隱藏跨域以欺騙瀏覽器
什麼是反向代理?
反向代理是指通過中間伺服器使得訪問同一個功能變數名稱的兩個不同url最終會去往兩個不同的伺服器
一:反向代理 - Nginx配置
在之前的被調用方解決跨域中,訪問的請求是絕對地址,瀏覽器可以看到進行了跨域。
而在這種方法中,使用的是相對地址,通過不同的相對地址使用Nginx進行轉發,使得實際上跨域的那個地址看起來沒有跨域,但是通過Nginx轉發到不同的伺服器上。
例子:
1 server { 2 listen 80; 3 a.com 4 5 location / { 6 proxy_pass http://localhost:8081/; 7 } 8 9 location /ajaxserver { 10 proxy_pass http://localhost:8080/; 11 } 12 }
結果:
訪問a.com實際上訪問的是:http://localhost:8081/
訪問a/ajaxserver.com實際上訪問的是:http://localhost:8080/
實際上跨域,但是使用nginx反向代理隱藏了跨域
二:反向代理 - Apache配置
依然使用反向代理,但是該方法使用Apache,
例子:
<VirtualHost *:80>
ServerName a.com
ProxyPass /ajaxserver http://localhost:8080/
ProxyPass / http://localhost:8081/
</VirtualHost>
結果同Nginx配置