В Node.js установка статуса 404 отвечает с 304 вместо - PullRequest
0 голосов
/ 09 ноября 2018

В моем приложении node.js (с Express) у меня есть последнее условие else, чтобы перехватить неизвестные пути и ответить файлом с именем '404.html':

else if(req.url !== '/json' && req.url !== '/version' && req.url !==  "/json/version"){
   res.status(404).send('<script>location.href = "/404.html";</script>');
} 

Это работает нормально, если, например, кто-то пытается получить доступ к неверному пути www.myApp.com/aaldkfjd или www.myApp.com/aaldkfjd/jkjadklfja/dkjfakj, который недопустим, поэтому он переходит в else и отправляет файл '404.html'.

но при проверке ответа сервера в клиенте я заметил, что это 304, а не 404.

enter image description here

<!doctype html>
<html lang="en-US">
<head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html">
    <title>My Awesome 404 page</title>
    <link rel="stylesheet" type="text/css" media="all" href="/css/styles.css"/>
    <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon.ico">
</head>

<body style="text-align:center;">
<div id="loginDiv">
    <h1 id="loginHeader">404...We don't know that route!</h1>
</div>

<img src="images/myImageMedium.png" alt="404 image">


</body>
</html>

Ответы [ 3 ]

0 голосов
/ 09 ноября 2018

Ваш сервер отправляет скрипт, который перенаправляет на страницу 404, таким образом, статус 304.

Лучшей практикой здесь было бы, чтобы узел сам отправлял "My Awesome 404 page".

Итак:

res.status(404).sendFile('public/404.html')
0 голосов
/ 09 ноября 2018

Вы можете попробовать следующий код:

else if(req.url !== '/json' && req.url !== '/version' && req.url !==  "/json/version"){ 
res.write('<script>location.href = "/404.html";</script>'); res.status(404).end();
} 
0 голосов
/ 09 ноября 2018

Браузер получает статус 404 и загружает страницу ошибки 404.

Страница ошибки содержит JavaScript, который заставляет браузер покинуть страницу 404 и перейти на новую страницу.

Тостраница загружена со статусом 304.


Вы должны отправить свое фактическое сообщение 404, когда вы выводите ошибку 404, а не перенаправлять клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...