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

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

CORS is a mechanism that allows resources such as JSON documents in an IBM® Cloudant® for IBM Cloud® database to be requested from JavaScript.

在这种情况下,JavaScript运行在从另一个域加载的网站上。

这些“跨域”请求通常会被网络浏览器禁止。 这些请求使用 相同的来源安全策略

CORS 定义了一种浏览器和服务器交互确定是否允许请求的方式。 对于IBM Cloudant 来说、 在以下使用情况下,CORS 可能是一个很好的解决方案。

  1. 您在 https://www.example.com 上有一个网站,您希望该网站上的脚本能访问 https://example.cloudant.com 的数据。

    要使这种访问成为可能、 在允许的来源列表中添加 https://www.example.com。 这样做的效果是,从该域加载的脚本将 允许向您的IBM Cloudant数据库发出 Ajax 请求。 通过在 CORS 请求中使用 HTTP 授权、 应用程序的用户只能访问自己的数据库。

  2. 您希望允许第三方访问您的数据库。

    例如,如果您有一个包含产品信息的数据库,请将其域添加到允许的来源列表中。 之后,您就可以让销售合作伙伴通过在其域上运行的JavaScript访问信息。 其效果是,在其网站上运行的脚本可以访问您的IBM Cloudant数据库。

浏览器支持

目前所有常用浏览器版本都支持 CORS。

Microsoft™ Internet Explorer10 之前的版本提供对 CORS 的部分支持。 Microsoft™ Internet Explorer第 8 版之前的版本不支持 CORS。

安全性

在可通过 CORS 访问的数据库中存储敏感数据是一个潜在的安全风险。 当你将一个域放入允许的来源列表中时、 就意味着信任来自该域的所有JavaScript。 如果域上运行的网络应用程序正在运行恶意代码或存在安全漏洞、 数据库中的敏感数据就可能暴露。

此外、 允许使用 HTTP 而不是 HTTPS 加载脚本、 然后使用 CORS 访问数据、 会带来中间人攻击修改脚本的风险。

要降低中间人攻击的风险,请遵循以下准则:

  • 不允许来自所有来源的 CORS 请求。 换句话说 除非确定要满足以下条件,否则不要设置 "origins": ["*"]
    • 您希望允许公开访问数据库中的所有数据。
    • 浏览器绝不使用允许修改数据的用户凭证。
  • 只允许来自 HTTPS 而非 HTTP 的 CORS 请求。
  • 确保在允许的源域上运行的网络应用程序是可信的,并且没有安全漏洞。 没有安全漏洞。

更多信息,请参阅有关 CORS 配置端点的 API 和 SDK 文档

仪表板

IBM Cloudant中提供 CORS 支持。控制面板。

您可以使用仪表板中的 CORS 选项卡更新 CORS 设置。 请看下面的截图:

CORS 仪表板可让您直接从浏览器连接到远程服务器。 使用 CORS,您可以在静态页面上托管基于浏览器的应用程序,并直接从IBM Cloudant 加载数据。
CORS dashboard

要查看当前 CORS 配置,请 在仪表板中打开 账户>CORS

您可以使用 Enable CORS 启用或禁用 CORS。 该设置与 enable_cors 选项相对应。 在应用程序中更改 CORS 配置时。

要指定所有域都启用 CORS、 选择 All domains (*) 选项。

要指定只对精确来源域启用 CORS、 使用 Restrict to specific domains 选项列出每个域或子域。 为每个域名 提供完整的 URL、 最好使用 https 前缀,以提高安全性。