aem - 为什么 AEM 对于没有扩展名的请求返回 403?

标签 aem sling

默认情况下,所有 GET 请求首先转到 DefaultGetServlet。基于扩展,它将请求委托(delegate)给渲染器。现在,如果请求 URI 中没有扩展名,为什么 AEM 会发送 403 (Forbidden)?至多,如果 AEM 无法提供此服务,它可能会改为发送 BAD REQUEST。即使您以管理员用户身份登录(具有最高级别的授权,如果有帮助的话),AEM 也会发送 403。

例子:

http://localhost:4502/content/geometrixx/en/events

此 URL 将以 403 响应。鉴于 ​​

http://localhost:4502/content/geometrixx/en/events.html

将毫无问题地送达。

最佳答案

如 Ahmed 所述,除上述内容外: 使用 URL“http://localhost:4502/content/geometrixx/en/eventsStreamRendererServlet 将被执行并解析为 redirect logic/ 结尾。

// redirect to this with trailing slash to render the index
String url = request.getResourceResolver().map(request,resource.getPath())+ "/";
response.sendRedirect(url);

一旦重定向到“http://localhost:4502/content/geometrixx/en/events/” 相同的 StreamRendererServlet 解析为 directory listing logic .

// trailing slash on url means directory listing
if ("/".equals(request.getRequestPathInfo().getSuffix())) {
  renderDirectory(request, response, included);
  return;
}

renderDirectory 中为 indexing will be false ,

if (index) {
  renderIndex(resource, response);
} else {
  response.sendError(HttpServletResponse.SC_FORBIDDEN);
}

将发送 403 Forbidden 响应。

您可以通过为“Apache Sling GET Servlet”felix 配置控制台启用“自动索引”来更改此行为。

关于aem - 为什么 AEM 对于没有扩展名的请求返回 403?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48166989/

相关文章:

aem - 通过 sling 重命名用户

java - 包含 CQ5 组件时无法创建 cq 节点

aem - 当我们有两个选择器时,Sling 如何解析脚本?

java - 如何解决 AEM6.1 中的 "org.apache.sling.servlets.post.impl.operations.ModifyOperation Unable to create resource"错误?

javascript - 如何在CQ中为节点开发自定义ACL

java - aem 6.1 扩展用户属性

aem - 在 AEM 6.5 和 Java 11 上打开页面属性时,日志中出现带有 NPE 的警告

aem - cq5 获取父节点属性

java - OSGi 组件可通过 Apache Felix 配置

java - 为什么吊索 :OsgiConfig node not working in/etc/folder in AEM?