浏览器使用跨域资源共享 (CORS) 从某个域而非当前域请求资源。Experience Cloud Identity 服务支持可启用这些客户端跨域资源请求的 CORS 标准。ID 服务会在旧版浏览器或不支持 CORS 的浏览器上还原为 JSONP 请求。
相同来源策略是Web浏览器实施的安全控制或限制。 当在此级别上强制实施时,Web浏览器本身会确定是否允许或阻止对从一个页面到另一个页面进行的资源请求。 要确定请求是否为同一来源请求,浏览器会比较:
如果两个页面共享这些特性,则浏览器允许请求成功;如果两个页面不共享,则阻止资源请求。
CORS为跨不同域请求资源提供了一种安全、有效的方法。 CORS规范包括一组HTTP头,浏览器使用这些头发送、接收和评估资源请求。 评估资源请求称为 preflight check
。 通过此检查,浏览器和服务器可确定允许或阻止哪些请求。 预检检查对请求资源的应用程序、API或脚本是透明的。 在资源请求流程中很重要的两个标题包括:
Origin
:识别请求源的请求标头。Access-Control-Allow-Origin
:指示某个资源能否与请求者共享的响应标头。下面我们看一看这些标头的工作方式。在此示例中,假设有一家金融服务公司在其网站 www.finance-website.com 上实施了 Experience Cloud ID 服务。下表定义了CORS请求和响应头检查对资源访问的方式。
操作 | 描述 |
---|---|
请求 |
加载金融公司页面时,浏览器向 dpm.demdex.net 提出请求。这是对ID服务使用的数据收集服务器(DCS)域的调用。 此跨域请求包含标题:
|
响应 |
来自DCS域的响应包括以下标头,这些标头使财务公司能够访问所需资源:
|
另请参阅 useCORSOnly。
下表说明了CORS为使用ID服务的客户提供的一些优势。
好处 | 描述 |
---|---|
增强的安全性 |
CORS使 用XMLHttpRequest 来请求和传输数据。 此方法比JSONP请求更安全。 它确保无法执行任意JavaScript,该任意JavaScript可能包含在DCS的响应中。 CORS XMLHttpRequest响应负载由ID服务JavaScript解析,而不是简单地在回调函数中执行。
注意:要接受 Cookie,XMLHttpRequest 对象的 withCredentials 属性需要设置为 true。Chrome、Firefox、Internet Explorer(v10+)、Opera和Safari中支持此属性。 |
性能改进 |
CORS有助于提高性能,因为:
|