IBM Cloud Docs
跨域資源共享 (CORS) 的工作原理

跨域資源共享 (CORS) 的工作原理

CORS是一種允許從JavaScript請求資源(例如IBM® Cloudant® for IBM Cloud®資料庫中的 JSON 文件)的機制。

在這種情況下,JavaScript正在從另一個網域載入的網站上運行。

這些「跨域」請求通常會被網頁瀏覽器禁止。 這些請求使用 相同的來源安全性策略

CORS 定義了瀏覽器和伺服器互動以確定是否允許請求的方式。 對於IBM Cloudant,CORS 在以下用例中可能是一個很好的解決方案。

  1. 您在 https://www.example.com 上有一個網站,並且您希望該網站上的腳本可以存取 https://example.cloudant.com 中的資料。

    要實現此訪問,請將 https://www.example.com 添加到允許的來源列表中。 其效果是,從此網域載入的腳本將被允許向您的IBM Cloudant資料庫發出 Ajax 請求。 透過將 HTTP 授權與 CORS 請求結合使用,應用程式的使用者只能存取他們的資料庫。

  2. 您希望允許第三方存取您的資料庫。

    例如,如果您有一個包含產品資訊的資料庫,請將其網域新增至允許的來源清單。 之後,您可以讓銷售合作夥伴透過在其網域上執行的JavaScript存取資訊。 其效果是在其網站上執行的腳本可以存取您的IBM Cloudant資料庫。

瀏覽器支援

所有目前版本的常用瀏覽器都支援 CORS。

版本 10 之前的Microsoft™ Internet Explorer版本提供對 CORS 的部分支援。 版本 8 之前的Microsoft™ Internet Explorer版本不支援 CORS。

安全

將敏感資料儲存在可以使用 CORS 存取的資料庫中是一個潛在的安全風險。 當您將某個網域放入允許的來源清單中時,您就信任該網域中的所有JavaScript。 如果在網域上執行的 Web 應用程式正在執行惡意程式碼或存在安全漏洞,則資料庫中的敏感資料可能會暴露。

此外,允許使用 HTTP 而不是 HTTPS 載入腳本,然後使用 CORS 存取數據,會帶來中間人攻擊可能修改腳本的風險。

為了降低中間人攻擊的風險,請遵循以下準則:

  • 不允許來自所有來源的 CORS 請求。 換句話說,除非您確定要滿足以下條件,否則不要設定 "origins": ["*"]
    • 您希望允許公開存取資料庫中的所有資料。
    • 瀏覽器中絕不會使用授予修改資料權限的使用者憑證。
  • 僅允許來自 HTTPS 來源的 CORS 請求,而不允許來自 HTTP 的 CORS 請求。
  • 確保在允許的來源網域上執行的 Web 應用程式受信任且不存在安全漏洞。

有關更多信息,請參閱有關 CORS 配置端點的 API 和 SDK 文件

儀表板

IBM Cloudant儀表板中提供了 CORS 支援。

您可以使用儀表板中的 CORS 標籤來更新 CORS 設定。 請看下面的截圖:

 CORS 儀表板可讓您直接從瀏覽器連線到遠端伺服器。 使用 CORS,您可以在靜態頁面上託管基於瀏覽器的應用程序,並直接從IBM Cloudant載入資料。
CORS 儀表板

若要查看目前的 CORS 配置,請在儀表板中開啟帳戶> CORS

您可以使用 Enable CORS 啟用或停用 CORS。 此設定對應於 enable_cors 選項。 當您從應用程式內變更 CORS 配置。

若要指定為所有網域啟用 CORS,請選擇 All domains (*) 選項。

若要指定僅對確切的來源網域啟用 CORS,請使用 Restrict to specific domains 選項列出每個網域或子網域。 對於每個網域,提供完整的 URL,最好使用 https 前綴以提高安全性。