如何在 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 测试)

salesforce零基础学习(九十一)Facet

来自salesforce的iOS中格式错误的json

Salesforce 执行顺序

React-Native:如何在 Airbnb 地图上渲染来自 firebase 的标记列表?

如何在 macOS 上渲染半透明的 MTKView?