For a minimalistic SimpleFileServer pseudocode below, how to disable directory listing?
对于下面的简约SimpleFileServer伪代码,如何禁用目录列表?
var server = HttpsServer.create(new InetSocketAddress(port), 2)
server.createContext("/file", SimpleFileServer.createFileHandler(Path.of("d:\file")));
server.start();
更多回答
Maybe it's me, but I would think that this question would benefit from more detail, more real code, and removal of the GitHub link. All pertinent information should be in the question itself, such as a minimal reproducible example code post, and not in a link.
也许是我的问题,但我认为这个问题将受益于更多的细节,更真实的代码,以及删除GitHub链接。所有相关信息都应该在问题本身中,例如一个最小的可重现的示例代码帖子,而不是在链接中。
Oh, I thought I only use jdk classes. Did u see any legal issues?
哦,我还以为我只用JDK类呢。你看到什么法律问题了吗?
What do you mean by "legal issues"? This site is a software Q&A site and does not delve into legal issues, other than that intellectual property rights must be respected. That's it.
你所说的“法律问题”是什么意思?本网站是一个软件问答网站,除了知识产权必须得到尊重外,不会深入探讨法律问题。就这样。
To be safe I am removing github redirection.
为了安全起见,我删除了github重定向。
优秀答案推荐
If you put an index file (index.html or index.htm) in the directory, then that will be served, rather than the directory contents.
如果您将索引文件(index.html或index.htm)放在目录中,则将提供该索引文件,而不是目录内容。
One more thing: you probably want a / at the end of the context path (so "/file/") as per the note in the API:
还有一件事:根据API中的说明,您可能需要在上下文路径的末尾添加一个/(即“/file/”):
The path should generally, but is not required to, end with '/'. If the path does not end with '/', eg such as with "/foo" then this would match requests with a path of "/foobar" or "/foo/bar".
Alternatively:
或者:
var server = HttpServer.create(new InetSocketAddress(8080), 2);
var fileHandler = SimpleFileServer.createFileHandler(Path.of("d:\file"));
server.createContext("/file/", (exchange) -> {
if (exchange.getHttpContext().getPath().equals(exchange.getRequestURI().getPath())) {
try (exchange) {
exchange.setAttribute("request-path", "could not resolve request URI path");
exchange.sendResponseHeaders(404, 0);
}
} else {
fileHandler.handle(exchange);
}
});
server.start();
更多回答
Thank you. Before "fileHandler.handle(exchange);", adding "if (file not exists) return;" helped a lot.
谢谢。在“fileHandler.Handle(Exchange);”之前,加上“if(FILE NOT EXISTS)RETURN;”很有帮助。
我是一名优秀的程序员,十分优秀!