Nginx如何實現跨域存取? Nginx跨域存取的實現
這篇文章要跟大家介紹的內容是關於Nginx如何實現跨域存取? Nginx跨域訪問的實現,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
一、什麼是跨域
跨域是指從一個網域的網頁去請求另一個網域的資源。例如從 www.a.com 頁面去請求 www.b.com 的資源。
瀏覽器一般預設會禁止跨網域存取。因為不安全,容易出現 CSRF(跨站請求偽造)攻擊。
二、Nginx控制瀏覽器允許跨網域存取
Nginx透過新增Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Allow-Headers 等HTTP頭資訊的方式控制瀏覽器快取。
"Access-Control-Allow-Origin" 設定允許發起跨域請求的網站
"Access-Control-Allow-Methods" 設定允許發起跨域請求請求的HTTP方法
"Access -Control-Allow-Headers" 設定允許跨網域請求包含Content-Type頭
ngx_http_headers_module
##語法#Syntax: add_header name value [always];
Default: —
Context: http, server, location, if in location
登入後複製
應用實例
Syntax: add_header name value [always]; Default: — Context: http, server, location, if in location
1. vim conf.d/cross_site.conf# 配置网站www.a.com
server {
server_name www.a.com;
root /vagrant/a;
# 允许 http://www.b.com 使用 GET,POST,DELETE HTTP方法发起跨域请求
add_header Access-Control-Allow-Origin http://www.b.com;
add_header Access-Control-Allow-Method GET,POST,DELETE;
}
# 配置网站www.b.com
server {
server_name www.b.com;
root /vagrant/b;
}
# 配置网站www.c.com
server {
server_name www.c.com;
root /vagrant/c;
}
登入後複製
# 配置网站www.a.com server { server_name www.a.com; root /vagrant/a; # 允许 http://www.b.com 使用 GET,POST,DELETE HTTP方法发起跨域请求 add_header Access-Control-Allow-Origin http://www.b.com; add_header Access-Control-Allow-Method GET,POST,DELETE; } # 配置网站www.b.com server { server_name www.b.com; root /vagrant/b; } # 配置网站www.c.com server { server_name www.c.com; root /vagrant/c; }
2. nginx -s reload 重新載入nginx設定檔
3. 建立/vagrant/a/a.txt、
/vagrant/b/index.html、
/vagrant/c/index .html 檔案
- vim /vagrant/a/a.txt
Hello,I'm a!
- ##/ vagrant/b/index.html
-
nbsp;html> <meta> <title>Ajax跨站访问b</title> <h1 id="Ajax跨站访问b">Ajax跨站访问b - </h1> <script></script> <script> $(function(){ $.ajax({ url: "http://www.a.com/a.txt", type: "GET", success: function (data) { $('h1').append(data); }, error: function (data) { $('h1').append('请求失败!'); } }); }) </script>
登入後複製
- /vagrant/c/index.html
-
nbsp;html> <meta> <title>Ajax跨站访问c</title> <h1 id="Ajax跨站访问c">Ajax跨站访问c - </h1> <script></script> <script> $(function(){ $.ajax({ url: "http://www.a.com/a.txt", type: "GET", success: function (data) { $('h1').append(data); }, error: function (data) { $('h1').append('请求失败!'); } }); }) </script>
登入後複製
windows:
C:\Windows\System32\drivers\etc\hosts#linux:
/etc/hosts新增以下內容,並儲存(192.168.33.88為筆者虛擬機器的IP,需自行替換為自己的IP):
192.168.33.88 www.a.com 192.168.33.88 www.b.com 192.168.33.88 www.c.com
http://www.b.com/index.html 和http://www.c.com/index.html
- http://www.b.com/index.html
-
#
Ajax跨站访问b - Hello,I'm a!
登入後複製
- http://www.c .com/index.html
-
Ajax跨站访问c - 请求失败!
登入後複製開啟瀏覽器的開發者模式Console,也可以發現http://www.c.com/index.html 的頁面出現報錯:
Failed to load http://www.a.com/a.txt: The 'Access-Control-Allow-Origin' header has a value 'http://www.b.com' that is not equal to the supplied origin. Origin 'http://www.c.com' is therefore not allowed access.
相關文章推薦:
Nginx作為靜態資源web服務來控制瀏覽器快取以及實作防盜鏈Nginx作為靜態資源web服務並進行靜態資源壓縮#以上是Nginx如何實現跨域存取? Nginx跨域存取的實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

使用PHP的cURL庫發送JSON數據在PHP開發中,經常需要與外部API進行交互,其中一種常見的方式是使用cURL庫發送POST�...

深入解讀ReactPHP的非阻塞特性ReactPHP的一段官方介紹引起了不少開發者的疑問:“ReactPHPisnon-blockingbydefault....
