Aem 403吊杆

Aem 403吊杆,aem,Aem,我正在关注这个博客。但是AEM 6.1中有403个错误。 我不想更改“ApacheSling引用过滤器”。 我认为这个错误是因为我可以通过调用/libs/granite/CSRF/token.json来获取CSRF令牌 但是我如何在表单头中添加此CSRF令牌?或者是否有其他方法使其工作?您可以添加带有独立标记的csrf令牌 <cq:includeClientLib categories="granite.csrf.standalone" /> 您可以在使用表单的每一页上添加此内

我正在关注这个博客。但是AEM 6.1中有403个错误。 我不想更改“ApacheSling引用过滤器”。 我认为这个错误是因为我可以通过调用/libs/granite/CSRF/token.json来获取CSRF令牌


但是我如何在表单头中添加此CSRF令牌?或者是否有其他方法使其工作?

您可以添加带有独立标记的csrf令牌

<cq:includeClientLib categories="granite.csrf.standalone" />

您可以在使用表单的每一页上添加此内容,或者您可以在每一页上继承一个母版页

在发送公式之前,csrf令牌是一个隐藏字段。看起来像

<input type="hidden" name=":cq_csrf_token" value="4a6sd4f6as4df6as.a5s4df6a4sdf674asd96f"></input>

由于您的页面位于AEM之外,因此全局处理此问题的一种方法是在应用程序中包含granite csrf JS,并将其修改为指向您的AEM token.json url。这个脚本负责表单发布和全局级别的AJAX调用

其次,该脚本检查相关的服务器url主机和上下文路径。因此,您还必须禁用这些功能。这是一个相当简单的JS修改。
我知道这不是一个合乎道德的方法,但以这种方式使用AEM也不是一个正常的用例:)

clientLibs我不能使用,因为这个html文件在AEM之外,它只是一个something.html文件。我甚至在html表单中添加了隐藏类型,但结果是一样的。如果你在AEM之外,我不知道怎么做。我只知道您可以从“/libs/granite/csrf/token.json”获得令牌。然后你必须将id添加到请求头中,也许你必须将其添加为“:cq_csrf_token”,但我不确定。Sling具有以这种方式使用POST servlet的功能,因此这是合乎道德的方式:),我通过具有适当头的java代码调用HTTP POST解决了这一问题。你能详细说明你的解决方案并将其添加为帮助他人的答案吗。起初我以为你是想从一个html页面上发帖。请检查