如何在 Salesforce 社区上渲染来自 Magnolia CMS 的图像?
Posted
技术标签:
【中文标题】如何在 Salesforce 社区上渲染来自 Magnolia CMS 的图像?【英文标题】:How to render images from Magnolia CMS on Salesforce Community? 【发布时间】:2020-09-28 20:33:26 【问题描述】:我能够在 Salesforce 社区上呈现来自 Magnolia public REST API 的文本内容。
问题:图像文件被 CSP(内容安全策略)阻止
已尝试:在 CSP 受信任站点的站点 URL 中以几种不同的方式添加了基本 URL
https://*.magnolia-cms.com
https://*.demopublic.magnolia-cms.com
https://demopublic.magnolia-cms.com
Also, included https://demopublic.magnolia-cms.com url in Trusted Sites for Script
我在这里缺少什么?
【问题讨论】:
【参考方案1】:这看起来像是忘记在 Magnolia 网站上设置 CORS 标头的典型情况,因此浏览器会按照规范的要求阻止请求:
出于安全原因,浏览器会限制从脚本发起的跨域 HTTP 请求。例如,XMLHttpRequest 和 Fetch API 遵循同源策略。这意味着使用这些 API 的 Web 应用程序只能从加载应用程序的同一来源请求资源,除非来自其他来源的响应包含正确的 CORS 标头。
More details here
如果您以前没有这样做过,您可以使用AddHeadersFilter
在标头中添加简单的静态 CORS 定义。之前讨论过,例如here
【讨论】:
您好 Jan,感谢您抽出宝贵时间回答。我正在使用 Magnolia (demopublic.magnolia-cms.com/.rest/delivery/tours/v1) 的公共 API,所以我假设他们已经在他们身边启用了 CORS。我在 Salesforce CORS 中将 demopublic.magnolia-cms.com 基本 URL 列入白名单,但仍然存在 CORS 问题。 反之亦然。 Magnolia 必须允许 salesforce,以便来自 Magnolia 的响应将 salesforce 列为来源,否则需要浏览器阻止来自 Magnolia 的数据请求。要对其进行测试,我建议您针对本地 Magnolia 实例执行。演示会定期重置,因此您所做的任何设置都会在几分钟内被清除。以上是关于如何在 Salesforce 社区上渲染来自 Magnolia CMS 的图像?的主要内容,如果未能解决你的问题,请参考以下文章
Salesforce:Javascript 不想重新渲染(经过 Chrome 测试)