2014-06-05 2 views
1

У меня есть простой Dart HTTPServer бега, который обслуживает запросы на virDir.serveRequest(request);, который работает по адресу 192.168.1.200:8080/index.html но обслуживает 404 Not Found, если я использую 192.168.1.200:8080 или 192.168.1.200:8080/. Я, вероятно, наивно, хотя это по умолчанию было автоматическим. Кстати, это для меня все ново.дротик HTMLrequest по умолчанию index.html не работает

Я не заметил никаких настроек по умолчанию в 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/бен и/SRV/fireimager/веб-с последний - корень виртуального каталога. Когда я обнаруживаю, что пользователь не указал /index.html в URL-адресе, он не работает, ошибка не испускается, и консоль javascript ничего не показывает, поэтому браузер не обслуживается.

Я, очевидно, не понимаю, как использовать VirtualDirectly.serveFiler.

+0

Если вы используете apache try http://127.0.0.1/ или http: // localhost –

+0

Существует аналогичный вопрос (немного устаревший) http://stackoverflow.com/questions/13081740 –

+0

Эта ссылка помогла но, по крайней мере, по логической ошибке. –

ответ

0

Ваша страница по умолчанию или index.html не предполагается вашим браузером, а сервером.

Что вы хотите сделать, это проверить, чтобы узнать, с чего заканчивается ваш запрос. На моем сервере я проверяю, заканчивается ли оно «/». Если он заканчивается знаком «/», я открываю и отправляю страницу по умолчанию.

Кроме того, вы захотите убедиться, что вы проверяете свой запрос, чтобы убедиться, что он не пытается получить доступ к областям, которые он не предполагает. Проверьте «..» в своих сегментах пути. Если у вас есть, вы, вероятно, захотите убить соединение.

+0

Если пользователь вводит «192.168.1.200:8080», он изменен до «192.168.1.200:8080/» к моменту обращения к серверу запроса? –

+0

По моему опыту, да/добавляется автоматически. – ptDave

+0

Когда вы делаете запрос в своем браузере, все запросы начинаются с /. – ptDave

Смежные вопросы