Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dart HTMLrequest default to index.html不起作用_Dart_Dart Io - Fatal编程技术网

dart HTMLrequest default to index.html不起作用

dart HTMLrequest default to index.html不起作用,dart,dart-io,Dart,Dart Io,我运行了一个简单的Dart HTTPServer,它通过virDir.serveRequest(请求)为请求提供服务用于URL192.168.1.200:8080/index.html,但如果我使用192.168.1.200:8080或192.168.1.200:8080/,则提供404未找到的。一、 可能是天真的,尽管默认值是自动的。顺便说一句,这对我来说是全新的 我没有注意到HTMLServer中有任何默认设置,这是如何实现的 (编辑) 我已经能够使用默认值检测使用情况并计算正确的文件名,但

我运行了一个简单的Dart HTTPServer,它通过
virDir.serveRequest(请求)为请求提供服务
用于URL
192.168.1.200:8080/index.html
,但如果我使用
192.168.1.200:8080
192.168.1.200:8080/
,则提供
404未找到的
。一、 可能是天真的,尽管默认值是自动的。顺便说一句,这对我来说是全新的

我没有注意到HTMLServer中有任何默认设置,这是如何实现的

(编辑)

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

\u processRequest(newPath,request){//新路径是index.html
文件文件=新文件(newPath);
file.exists()。然后((找到){
如果(找到){
file.openRead().pipe(request.response);//可能在这里消亡
}
否则{
_send404(请求.响应);
}
});
}
[编辑]

仍然无法为index.html文件提供服务。我尝试过使用VirtualDirector.serveFile(),但在尝试处理默认index.html文件时无法使其正常工作。我一直在尝试效仿一个例子

final HTTP_ROOT_PATH=Platform.script.resolve('../web').toFilePath();
final virDir=new VirtualDirectory(HTTP\u ROOT\u路径)
…jailRoot=false//进程链接将起作用
…followLinks=true
..AllowDirectoryList=true;
var dir=新目录(virDir.root);
var indexUri=newuri.file(dir.path.resolve('/index.html');
virDir.serveFile(新文件(indexUri.toFilePath()),请求);
当我运行这个并打印indexUri.toFilePath()时,输出是“/index.html”

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


我显然不明白如何直接使用virtualdirect.serveFiler。

您的默认页面或index.html不是由浏览器承担的,而是由服务器承担的

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


此外,您还需要确保检查您的请求,以确保它没有试图访问它不应该访问的区域。检查路径段中的“.”。如果您有任何问题,您可能想终止连接。

如果您使用的是apache,请尝试或遇到类似问题(尽管有点过时)该链接对我有所帮助,但至少存在逻辑错误。如果用户输入
192.168.1.200:8080',服务器访问请求时是否会将其修改为
192.168.1.200:8080/'。根据我的经验,是的,会自动添加/。当您在浏览器上发出请求时,所有请求都以/开头。