嵌入EDS媒体资源跨源时出现CORS错误
本文介绍了在从Adobe Experience Manager Edge Delivery Services (EDS)跨域媒体端点嵌入SVG和其他媒体资源时发生CORS错误的原因,并介绍了受支持的解决这些错误的方法。
描述 description
将EDS组件(如HTML、JavaScript、CSS或媒体资产)嵌入到第三方网站或CMS时,会出现SVG图标或通过CSS蒙版图像引用的图像的CORS(跨源资源共享)错误。 这是因为从EDS CDN提供的媒体资源不包括Access-Control-Allow-Origin 标头,而HTML和JS资源则可用。 因此,浏览器会阻止跨域请求这些媒体资产,从而导致错误,例如:请求的资源上不存在“Access-Control-Allow-Origin”标头。
环境
Adobe Experience Manager (AEM) Edge Delivery Services (EDS),所有版本
症状
- 从跨源的媒体端点加载SVG或其他媒体资产时,浏览器开发人员工具中出现CORS错误
- EDS中的HTML和JS资源包含
Access-Control-Allow-Origin标头,但媒体资源不包含。 - 受影响的用例包括将EDS组件嵌入到第三方CMS页面中,其中资产URL被构造为指向EDS CDN的绝对URL。
原因
服务EDS媒体资源的Fastly图像优化/媒体总线不支持自定义CORS标头配置。 此限制超出站点配置、cdn.yaml响应转换和管理员API的范围。 不支持对这些端点直接进行跨域访问;应通过CDN代理以同域方式提供所有资源,以避免实施浏览器CORS。
解决方法 resolution
请按照以下步骤解决问题:
- 确定位于您的EDS源之前的CDN或域(例如:您组织的CDN ,它将请求代理到EDS CDN)。
- 更新您的EDS组件逻辑,以便所有资产URL(包括用于CSS蒙版图像的URL)都引用您的CDN域,而不是引用直接EDS CDN URL。
- 确保将您的CDN配置为将请求代理到EDS源并为媒体资源设置适当的CORS标头(例如
Access-Control-Allow-Origin: * )。 - 如果您不控制第三方CMS或其CDN,请考虑将您自己的CDN设置为EDS CDN的代理,在该CDN上配置CORS,并让CMS通过您的CDN访问媒体资源。
- 进行这些更改后,请确认所有媒体请求均来自与嵌入页面相同的来源,并且CORS错误不再出现在浏览器开发人员工具中。
recommendation-more-help
experience-cloud-kcs-help-kbarticles