CQ / AEM组件与跨域平台交互

时间:2014-09-24 18:38:48

标签: cross-domain cq5 aem

有没有办法开发组件来与其他平台的内容进行交互?两者都是托管在不同服务器上的基于CQ的应用程序。

换句话说,如何在两个平台之间进行通信(两者都是不同服务器上的CQ应用程序)

1 个答案:

答案 0 :(得分:2)

跨域交互挑战在CQ中与在任何Web应用程序中相同。虽然存在多种方法,但我发现JSONP是允许跨域通信的最简单方法。您可以构建一个.jsonp选择器(例如通过向组件添加jsonp.jsp)并使JSP功能与内置的.json选择器非常相似,它允许您以JSON格式查看CRX存储库中的节点。在这种情况下,你的选择器需要返回JSONP格式而不是JSON,它可能希望接受一个回调名称作为输入参数(例如?callback = myCallbackname),这样它就可以将它返回的JSON包装在一个函数中请求的名称。

然后,将该选择器部署在一个CQ平台上,您可以在另一个平台上构建一个组件,该组件将使用.jsonp选择器向另一个CQ平台发出JSONP AJAX请求以获取信息。实际上,.jsonp选择器可以被编码为执行任何您想要或需要它做的事情,因此如果获取节点信息并不是您需要的那种通信,那么它可以执行其他操作。只要AJAX jsonp请求收到适当的JSONP响应,您就可以进行跨域通信。

有关JSONP的更多信息,请参阅What is JSONP all about?

另请参阅http://api.jquery.com/jQuery.ajax/了解jQuery的JSONP支持,作为示例。