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

Pra*_*kar 3 sling aem

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

例子:

http://localhost:4502/content/geometrixx/en/events
Run Code Online (Sandbox Code Playgroud)

该 URL 将返回 403 响应。而

http://localhost:4502/content/geometrixx/en/events.html
Run Code Online (Sandbox Code Playgroud)

将毫无问题地提供服务。

Dil*_*epa 5

添加到上面,正如艾哈迈德提到的:使用 URL“ http://localhost:4502/content/geometrixx/en/eventsStreamRendererServlet将被执行并解析为以结尾的重定向逻辑/

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

一旦重定向到“ http://localhost:4502/content/geometrixx/en/events/ ”,同样StreamRendererServlet解析为目录列表逻辑

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

renderDirectoryas索引中将会是 false

if (index) {
  renderIndex(resource, response);
} else {
  response.sendError(HttpServletResponse.SC_FORBIDDEN);
}
Run Code Online (Sandbox Code Playgroud)

将发送 403 Forbidden 响应。

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