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 请求更安全。它可确保无法执行任意 JavaScript,后者可能包含在来自 DCS 的响应中。CORS XMLHttpRequest 响应载荷由 ID 服务 JavaScript 解析,而不只是在回调函数中执行。

注意:要接受 Cookie,XMLHttpRequest 对象的 withCredentials 属性需要设置为 true。此属性在 Chrome、Firefox、Internet Explorer (v10+)、Opera 和 Safari 中受支持。

改进了性能

CORS 有助于改进性能,这是因为:

  • 浏览器会管理资源请求。请求过程对 ID 服务是透明的。
  • 与异步 JSONP 请求不同,浏览器不会降低 CORS 请求的优先级并将其加入队列。
  • ID 服务会允诺做出响应。这意味着当 URL 作为 Origin 传入时,ID 服务会向页面授予所需资源的访问权限。

在此页面上