跨源資源共享 (CORS)

同源政策是針對用戶端網路應用程式 (例如網路瀏覽器) 強制實行的安全性政策,目的在於防止不同來源的資源產生互動。這項安全措施雖能有效防止惡意行為,卻也阻止已知來源之間進行合法的互動。舉例來說,由 AppEngine 在 example.appspot.com 所代管網頁的指令碼可能需要使用在 example.storage.googleapis.com 的 Cloud Storage 值區所儲存的資源。然而,由於瀏覽器將兩者視為來源不同的資源,因此不會允許來自 example.appspot.com 的指令碼擷取來自 example.storage.googleapis.com 的資源。

全球資訊網協會 (W3C) 為克服這項限制,開發跨源資源共享 (CORS) 規格。Cloud Storage 支援這個規格,可讓您設定支援 CORS 的值區。在上述的範例中,您可以設定 example.storage.googleapis.com 值區,讓瀏覽器能夠與來自 example.appspot.com 的指令碼共用其資源。

CORS 的運作方式

CORS 要求有兩種類型:簡易和預檢。系統可直接啟動簡易要求,而預檢要求則必須向伺服器傳送初步的「預先檢查」要求來取得權限,接著系統才會繼續處理主要要求。如果出現以下任何一個情況,則該要求為預檢要求:

  • 要求使用 GETHEADPOST 以外的方法。
  • 要求使用 POST 方法搭配 text/plainapplication/x-www-form-urlencodedmultipart/form-data 以外的 Content-Type
  • 要求設定自訂標頭。

瀏覽器向 Cloud Storage 發出簡易要求時,流程會如下進行:

  1. 瀏覽器會將 Origin 標頭新增至要求。Origin 標頭包含尋求共用其他網域資源的資源來源,例如 Origin:http://www.example.appspot.com

  2. Cloud Storage 會將要求的 HTTP 方法和 Origin 標頭值與目標值區 CORS 設定中的方法來源資訊進行比較,以查看其是否相符。如果相符,Cloud Storage 就會在回應中加入 Access-Control-Allow-Origin 標頭。Access-Control-Allow-Origin 標頭包含來自初始要求的 Origin 標頭值。

  3. 瀏覽器收到回應並檢查 Access-Control-Allow-Origin 值是否符合原始要求中指定的網域。如果兩者相符,則要求成功。如果不相符,或是回應中沒有 Access-Control-Allow-Origin 標頭,則要求失敗。

預檢要求會先執行下列步驟。如果成功,則會按照與簡易步驟相同的程序繼續執行:

  1. 瀏覽器傳送 OPTIONS 要求,其中包含主要要求的 Requested MethodRequested Headers

  2. 伺服器以目標資源允許的 HTTP 方法和標頭值回應。如果預檢要求的任何方法或標頭值並非目標資源允許的方法和標頭,則要求會失敗,系統也不會傳送主要要求。

以上為 CORS 的簡要說明。如需更加完整的說明資訊,請參閱跨源資源共享規格。

Cloud Storage CORS 支援

Cloud Storage 僅能讓您設定值區層級的 CORS 設定。 您也可以透過 gsutil 指令列工具 (XML APIJSON API) 為值區設定 CORS 配置。

如需在值區設定 CORS 配置的相關資訊,請參閱 設定跨源資源共享 (CORS)。如需瞭解 CORS 設定元素,請參閱設定值區 CORS

您可以透過下列任一個 XML API 要求網址,從 Cloud Storage 取得包含 CORS 標頭的回應:

storage.googleapis.com/[BUCKET_NAME]
[BUCKET_NAME].storage.googleapis.com

如需瞭解 XML API 要求網址,請參閱要求端點

用戶端 CORS 支援

大多數瀏覽器都是使用 XMLHttpRequest 物件來提出跨域要求。XMLHttpRequest 會負責插入正確的標頭,並且處理 CORS 和伺服器之間的互動。您不需要新增任何程式碼,即可利用 Cloud Storage 值區提供的 CORS 支援服務。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Storage
需要協助嗎?請前往我們的支援網頁