gpt4 book ai didi

dart - dart HTMLrequest默认为index.html不起作用

转载 作者:行者123 更新时间:2023-12-03 04:06:53 24 4
gpt4 key购买 nike

我有一个运行的简单Dart HTTPServer,它通过virDir.serveRequest(request);提供请求,该请求适用于URL 192.168.1.200:8080/index.html,但是如果我使用404 Not Found192.168.1.200:8080,则提供192.168.1.200:8080/。我可能很天真,尽管默认设置是自动的。顺便说一句,这对我来说是全新的。

我没有注意到HTMLServer中的任何默认设置,这是如何完成的?

(编辑)

我已经能够使用默认值检测到使用情况并计算出正确的文件名,但不了解如何将其传递给浏览器:

_processRequest(newPath, request) { // new path is index.html
File file = new File(newPath);
file.exists().then((found) {
if(found) {
file.openRead().pipe(request.response); // probably dies here
}
else {
_send404(request.response);
}
});
}

[编辑]

仍然无法提供index.html文件。我尝试使用VirtualDirector.serveFile(),但是在尝试处理默认的index.html文件时无法使其工作。我一直在尝试遵循一个例子。

final HTTP_ROOT_PATH = Platform.script.resolve('../web').toFilePath();
final virDir = new VirtualDirectory(HTTP_ROOT_PATH)
..jailRoot = false // process links will work
..followLinks = true
..allowDirectoryListing = true;

var dir = new Directory(virDir.root);
var indexUri = new Uri.file(dir.path).resolve('/index.html');
virDir.serveFile(new File(indexUri.toFilePath()), request);

当我运行此命令并打印indexUri.toFilePath()时,输出为'/index.html'

我的代码在/ srv / fireimager / bin和/ srv / fireimager / web中,后者是虚拟目录根目录。当我检测到用户未在url中指定/index.html时,它不起作用,没有发出错误,并且javascript控制台未显示任何内容,因此没有为浏览器提供任何服务。

我显然不明白如何使用VirtualDirectly.serveFiler。

最佳答案

您的默认页面或index.html不是由您的浏览器而是由服务器假定的。

您要做的就是检查一下您的请求以什么结尾。在我的服务器中,我检查它是否以“/”结尾。如果确实以“/”结尾,则打开并发送默认页面。

另外,您将要确保检查您的请求,以确保它没有尝试访问它不应该访问的区域。在路径段中检查“..”。如果有的话,您可能想终止连接。

关于dart - dart HTMLrequest默认为index.html不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24066032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com