跨域策略文件的必要性和應用場景詳解

一、什麼是跨域請求

在現代 web 應用中,跨域請求是很常見的。所謂跨域,就是指通過 Ajax 或者其他方式從當前頁面向不同源(域名、埠、協議)的伺服器發起請求。

跨域請求在安全性上可能存在風險,如黑客利用跨域請求盜取用戶的敏感信息。因此,瀏覽器實際中對跨域請求進行了限制。如 Ajax 不允許發送跨域請求等。

二、跨域策略文件的必要性

為了保證前端頁面的安全性,所有現代瀏覽器都實施了同源策略。這個策略要求,如果一個資源(例如腳本、樣式表、圖片等)要被當前頁面之外的代碼訪問,那麼該資源的伺服器必須允許訪問。

而跨域策略文件(Cross-Origin Resource Sharing, CORS)就是為了解決這個問題而被引入的。跨域策略文件,簡稱 CORS 文件,用於 HTTP 請求在特定情況下完成跨域訪問。

CORS 文件是一個 HTTP 頭信息,主要定義了哪些外域被允許訪問當前域的資源。實際上,CORS 文件是 Web 伺服器通過 HTTP 頭信息告訴瀏覽器。這樣,當瀏覽器發起跨域請求時,會根據這個文件的規則進行跨域訪問。

三、CORS 的應用場景

1、使用第三方 API

很多現代應用都需要調用第三方 API,而這些 API 通常都不在同一域名下,這就需要使用跨域請求。

const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://www.example.com/api', true);
xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
        console.log(xhr.responseText);
    }
}
xhr.send();

在這種情況下,伺服器需要允許 www.example.com 域名下的 JavaScript 腳本訪問該 API。伺服器可以通過設置 CORS 文件來控制訪問規則。

2、使用 CDN 載入靜態資源

很多網站都使用 CDN 載入靜態資源,如樣式、腳本、字體等。而 CDN 與網站往往不在同一域名下,這就需要使用跨域請求。


在這種情況下,CDN 需要允許當前網站訪問該靜態資源。CDN 伺服器可以通過設置 CORS 文件允許訪問。

四、CORS 文件的設置方式

伺服器可以通過兩種方式設置 CORS 文件:一是通過 HTTP 響應頭信息設置;二是通過文件內容設置。

1、通過 HTTP 響應頭信息設置

伺服器可以在 HTTP 響應頭信息中添加 CORS 相關的欄位,告訴瀏覽器哪些外域名的請求是允許的。

Access-Control-Allow-Origin: http://www.example.com
Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: X-Custom-Header, Upgrade-Insecure-Requests
Access-Control-Allow-Credentials: true

2、通過文件內容設置

除了在 HTTP 響應頭信息中添加 CORS 欄位,還可以通過文件內容設置 CORS 文件。

在 Apache 伺服器中:

Header set Access-Control-Allow-Origin "http://www.example.com"
Header set Access-Control-Allow-Methods "POST, GET, PUT, DELETE, OPTIONS"
Header set Access-Control-Allow-Headers "X-Custom-Header, Upgrade-Insecure-Requests"
Header set Access-Control-Allow-Credentials "true"

在 Nginx 伺服器中:

add_header 'Access-Control-Allow-Origin' 'http://www.example.com';
add_header 'Access-Control-Allow-Methods' 'POST, GET, PUT, DELETE, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'X-Custom-Header, Upgrade-Insecure-Requests';
add_header 'Access-Control-Allow-Credentials' 'true';

五、總結

跨域問題一直是現代 web 開發中的難題,而跨域策略文件(CORS)就是為了解決這個問題而被引入的。在開發 web 應用時,開發者應該深入了解跨域問題和 CORS 文件,在實際開發中做好跨域訪問的管理與控制。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/300293.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-29 12:51
下一篇 2024-12-29 12:51

相關推薦

  • Unity3D 創建沒有 Terrain Tile 的場景

    這篇文章將會介紹如何在 Unity3D 中創建一個沒有 Terrain Tile 的場景,同時也讓讀者了解如何通過編程實現這個功能。 一、基礎概念 在 Unity3D 中,Terr…

    編程 2025-04-29
  • Python量化策略代碼用法介紹

    Python量化策略是一種金融投資策略,在金融領域中得到越來越廣泛的應用。下面將從數據準備、策略制定、回測和優化等方面介紹Python量化策略的詳細實現。 一、數據準備 在量化策略…

    編程 2025-04-29
  • Python強制轉型的實現方法和應用場景

    本文主要介紹Python強制轉型的實現方法和應用場景。Python強制轉型,也叫類型轉換,是指將一種數據類型轉換為另一種數據類型。在Python中,強制轉型主要通過類型構造函數、轉…

    編程 2025-04-29
  • Access執行按鈕的實現方法及應用場景

    本文將詳細介紹Access執行按鈕的實現方法及其在實際應用場景中的使用方法。 一、創建Access執行按鈕的方法 在Access中,創建執行按鈕的方法非常簡單。只需要按照以下步驟進…

    編程 2025-04-27
  • 機制與策略分離

    了解機制與策略分離的解決方法與優勢 一、概述 機制與策略分離是一種軟體設計理念,它將複雜的系統、組件等模塊化,通過分離機制與策略,把模塊實現的方式與具體使用方式分開。 機制是實現某…

    編程 2025-04-27
  • 用Python繪製櫻花飄落場景

    本文介紹如何用Python繪製一個帶有櫻花飄落特效的場景,通過本文的學習,您將了解到如何使用Python的turtle庫來繪製圖形,以及如何運用數學和物理知識來實現櫻花的飄落效果。…

    編程 2025-04-27
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web伺服器。nginx是一個高性能的反向代理web伺服器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25

發表回復

登錄後才能評論