如何在CRXDE Lite/AEM中启用CORS

如何在CRXDE Lite/AEM中启用CORS,cors,aem,crx,Cors,Aem,Crx,我们使用CRX DE lite/Adobe EM作为Angularjs SPA UI/前端的后端。我们如何为这种后端技术设置COR?我们可以使用该工具更改设置。但我们不确定如何设置启用CORS 请给出建议。我不知道在AEM中在哪里启用CORS(或者如果可能的话,我会查看OSGi控制台http://localhost:4502/system/console/configMgrif anywhere)但解决CORS问题的一种方法是在同一领域中公开AEM和前端,通过在Apache上设置代理,这应该相当

我们使用CRX DE lite/Adobe EM作为Angularjs SPA UI/前端的后端。我们如何为这种后端技术设置COR?我们可以使用该工具更改设置。但我们不确定如何设置启用CORS


请给出建议。

我不知道在AEM中在哪里启用CORS(或者如果可能的话,我会查看OSGi控制台
http://localhost:4502/system/console/configMgr
if anywhere)但解决CORS问题的一种方法是在同一领域中公开AEM和前端,通过在Apache上设置代理,这应该相当容易

在AEM发布实例前面的Apache服务器上,在
httpd.conf
中,可以执行以下操作:

ProxyPass /your-frontend http://whatever.it.runs.on/actual-path-to-the-frontend/
ProxyPassReverse /your-frontend http://whatever.it.runs.on/actual-path-to-the-frontend/

自AEM 6.3起 有一个名为的OOTB服务。这就像使用
alloworigin创建OSGi配置一样简单=[http://localhost:8000]
属性。在我的例子中,Angular应用程序在端口8000上运行,试图访问4503上的发布服务器

之前的AEM 6.3 我(一开始)所做的是创建一个实现了
authenticationInfo后处理器
的服务。在这里,我设置了以下标题:

  • 访问控制允许凭据
  • 访问控制允许源
  • 访问控制允许方法
对于GET请求,一切都很好。但是当我们尝试POST时,我们遇到了浏览器发送飞行前选项请求失败的问题,因为浏览器没有使用
login token
cookie执行此操作

然后我们尝试了一个
@SlingFiter
,但是它属于正常的吊索管道,因此它是在检查了身份验证之后进行的,因此没有身份验证cookie,飞行前总是会失败

最后,我们使用以下注释实现了一个过滤器:

@Component(immediate = true)
@Service(value = Filter.class)
@Properties({ @Property(name = "pattern",
                        value = "/.*"),
              @Property(name = Constants.SERVICE_RANKING,
                        intValue = 1000) })

这里的关键是
模式
属性,它将过滤器注册为ApacheFelix白板过滤器,而不是Sling。因此,过滤器将为选项和返回设置CORS标头,并为所有其他内容设置CORS标头,并将请求传递给链中的下一个过滤器。

感谢tonied的想法……我正在使用nodejs做类似的事情。我只是想找到一种方法来删除中间的反向代理服务器。