我们需要什么:如何在任何页面上执行外部POST请求?
我们为什么需要:我们正在为客户使用Adobe CQ开发安全的Intranet门户。对Intranet门户的任何Adobe CQ页面的任何请求都会重定向到客户端的界面。这是一个外部系统,它生成一个TOKEN,并通过POST方法通过HTTP请求将此令牌作为请求参数发送给CQ。
我们根据此令牌设置我们的Cookie,该令牌需要成为每个页面的一部分。 (我们正在使用页面组件的inhertiance并在根级别设置它们)
需要有关如何实现这一目标的建议。如果需要更多细节,请告诉我。
答案 0 :(得分:0)
您可以定义servlet接受的方法,因此可以使用JSP处理GET,使用SlingAllMethodsServlet
处理POST。
@Component(metatype = false)
@SlingServlet(resourceTypes = "cq:Page", methods = "POST", generateComponent = false)
public class MyPOSTServlet extends SlingAllMethodsServlet {
@Override
protected void doPost(final SlingHttpServletRequest request,
final SlingHttpServletResponse response) throws ServletException,
IOException {
//your logic here
}
}
这应该针对所有页面触发。
关于您的问题下面的评论,永远不要有/content
的servlet路径。固定虚拟路径,例如/bin/myservlet
或resourceType
。
查看Sling的文档:https://sling.apache.org/documentation/the-sling-engine/servlets.html