Experience Cloud Identity 服务中的 CORS 支持

浏览器使用跨域资源共享 (CORS) 从某个域而非当前域请求资源。Experience Cloud Identity 服务支持可启用这些客户端跨域资源请求的 CORS 标准。ID 服务会在旧版浏览器或不支持 CORS 的浏览器上还原为 JSONP 请求。

同域策略和 ID 服务请求的问题

同域策略是 Web 浏览器所实施的安全控制或限制。当在此级别实施时,Web 浏览器本身会确定是允许还是阻止从一个页面到另一个页面的资源请求。要确定请求是否是同域请求,浏览器将比较以下项:

  • 统一资源标识符 (URI)
  • 主机名(例如 http://www.my-webpage-example.com)
  • 端口号(例如,分别用于 HTTP 和 HTTPS 请求的端口 80 和 440)

如果两个页面共享这些特征,则浏览器将允许请求成功,否则将阻止资源请求。

CORS 可解决同域策略问题

CORS 提供了一种安全、有效的方式,可跨越不同的域请求资源。CORS 规范包括一组 HTTP 标头,浏览器将使用这些标头来发送、接收和评估资源请求。评估资源请求被称为 preflight check。浏览器和服务器可通过此检查确定允许或阻止的请求。预检检查对请求资源的应用程序、API 或脚本来说是透明的。在资源请求流程中,两个重要的标头是:

  • Origin:识别请求源的请求标头。
  • Access-Control-Allow-Origin:指示某个资源能否与请求者共享的响应标头。

下面我们看一看这些标头的工作方式。在此示例中,假设有一家金融服务公司在其网站 www.finance-website.com 上实施了 Experience Cloud ID 服务。下表定义了 CORS 请求和响应标头如何检查对资源的访问。

操作 描述

请求

加载金融公司页面时,浏览器向 dpm.demdex.net 提出请求。也就是调用 ID 服务所使用的数据收集服务器 (DCS) 域。此跨域请求包含以下标头:

  • Origin:https://www.finance-website.com

响应

来自 DCS 域的响应包含以下标头,它们可为金融公司的站点提供对所需资源的访问权限:

  • Access-Control-Allow-Origin: https://www.finance-website.com
  • Access-Control-Allow-Credentials: true

另请参阅 useCORSOnly

使用 CORS 的其他好处

下表描述了 CORS 为使用 ID 服务的客户带来的一些益处。

好处 描述

安全性提升

CORS 使用 XMLHttpRequest 请求和传输数据。这种方法比 JSONP 请求更加安全。它可以确保没有办法执行可能包含在 DCS 响应中的任何 JavaScript。CORS XMLHttpRequest 响应负载由 ID 服务 JavaScript 解析,而不是简单地在回调函数中执行。

注意:要接受 Cookie,XMLHttpRequest 对象的 withCredentials 属性需要设置为 true。Chrome、Firefox、Internet Explorer(版本 10 及更高版本)、Opera 和 Safari 都支持此属性。

性能改进

CORS 可以帮助改进性能,因为:

  • 浏览器可以管理资源请求。请求流程对 ID 服务来说是透明的。
  • 与异步 JSONP 请求不同,浏览器不会对 CORS 请求取消优先级和排队。
  • ID 服务可自由响应。这意味着当 URL 作为 Origin 传入时,ID 服务会向页面授予所需资源的访问权限。

在此页面上