默认情况下,所有 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/events”StreamRendererServlet
将被执行并解析为 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/