Nginx解決轉(zhuǎn)發(fā)地址時跨域的問題
一、什么是跨域問題
在一個服務(wù)器A里放置了json文件,另一個服務(wù)器B想向A發(fā)送ajax請求,獲取此文件,會發(fā)生錯誤。
Chrome提示:
XMLHttpRequest cannot load ******. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
這就是跨域問題。解決方案有不少,比較好的是服務(wù)器端配置CORS,但要求服務(wù)器端做更改。如果在不需要更改服務(wù)器端的情況下解決呢?尤其是需要在本地測試的時候。
二、配置Nginx
打開nginx目錄下的conf文件夾。打開nginx.conf,將其中的http請求修改為:
http { include mime.types; server { listen 80; server_name localhost; charset UTF-8; location / { root html; index index.html index.htm; } # Avoid CORS and reverse proxy settings location /api/ { # [2] proxy_http_version 1.1; proxy_pass http://www.des.com/; # [3] add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods "POST, GET, OPTIONS"; add_header Access-Control-Allow-Headers "Origin, Authorization, Accept"; add_header Access-Control-Allow-Credentials true; } } }
注意粗體字的部分,/api/表示當(dāng)請求api目錄時,轉(zhuǎn)向http://www.des.com/域名。
例如,請求:
http://127.0.0.1/api/ 就會轉(zhuǎn)向 http://www.des.com/
http://127.0.0.1/api/aaa/bbb/ 就會轉(zhuǎn)向 http://www.des.com/aaa/bbb/
這種由服務(wù)器轉(zhuǎn)發(fā)的請求,可以突破跨域的限制,因此ajax也可以正常工作。
注意: /api/ 不行寫成 /api。
http://www.des.com/ 也不能寫成 http://www.des.com
三、配置hosts
為了在本機測試看起來更像在目標(biāo)服務(wù)器上測試,可以設(shè)置系統(tǒng)的hosts文件。
每個系統(tǒng)(windows、Linux、Mac OS)都有hosts文件,它是本地的域名解析器。
通常,我們請求一個域名,如www.baidu.com,首先要向域名服務(wù)器請求百度的IP地址,然后再根據(jù)IP地址來訪問。
也可以不需要咨詢域名服務(wù)器,直接在本地的hosts鍵入百度的IP地址。
例如
252.192.0.15 www.baidu.com
這樣,系統(tǒng)會先從hosts文件里搜索IP地址。
Windows下的hosts文件位于:C:\Windows\System32\drivers\etc
打開后,添加
127.0.0.1 www.des.com
則,每次訪問www.des.com,就會鏈接到本地。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
Nginx+SpringBoot實現(xiàn)負(fù)載均衡的示例
這篇文章主要介紹了Nginx優(yōu)雅的實現(xiàn)負(fù)載均衡,幫助大家更好的理解和使用nginx,感興趣的朋友可以了解下2020-10-10nginx location中uri的截取的實現(xiàn)方法
這篇文章主要介紹了nginx location中uri的截取的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Nginx內(nèi)網(wǎng)單機反向代理的實現(xiàn)
本文主要介紹了Nginx內(nèi)網(wǎng)單機反向代理的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11Nginx可視化管理軟件(Nginx Proxy Manager)的使用
Nginx Proxy Manager是一款開源的Nginx可視化管理界面,本文就來介紹一下Nginx Proxy Manager的使用,感興趣的可以了解一下2024-03-03nginx connect() to unix:/var/run/php-fpm.sock failed (11: Re
這篇文章主要介紹了nginx connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable),需要的朋友可以參考下2015-01-01