首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用什么HTTP状态来发送404页?

我应该使用什么HTTP状态来发送404页?
EN

Stack Overflow用户
提问于 2020-05-09 16:25:32
回答 1查看 53关注 0票数 1

我有一个页面应用程序,在这个应用程序中,所有的路由都是在客户机上使用react-router-dom完成的。

我的应用程序允许一组精确的匹配路线。

对于该集合之外的任何路由,它都将被视为无效,客户端代码将重定向到/404-page路由。

因此,--我在服务器上呈现时也需要这样做.

这就是流程:

您将向我的服务器请求/invalid-route

  • My代码的react-router将呈现一个<Redirect to="/404-page"/>

  • I将需要将您的请求重定向到/404-page

  • What代码,应该用于重定向吗?

我想我应该设置status = 404。因为那条路没被找到,对吧?

类似于:

代码语言:javascript
复制
// YOU'VE REQUESTED SOME /invalid-route

res.status(404).redirect(ROUTES.NOT_FOUND);

但现在你要向我的服务器询问/404-page路线。它实际上将呈现一个404 Page

您为/404-page

  • My服务器请求的
  • 将为您呈现一个404页。
  • 为404页使用哪种状态代码?

我应该使用200 Ok吗?因为我的/404-page是一个有效的、现有的URL,它实际上会呈现某些内容吗?

代码语言:javascript
复制
// NOW YOU ARE REQUESTING MY /404-page

res.status(200).send( // 404 PAGE HTML );

这样做对吗?

更新:

我的问题是假设出了什么问题。

当用户请求/invalid-url时,您不能同时发送404和重定向。

因为以下代码:

代码语言:javascript
复制
// YOU'VE REQUESTED SOME /invalid-route

res.status(404).redirect(ROUTES.NOT_FOUND);

// NOW YOU ARE REQUESTING MY /404-page

res.status(200).send( // 404 PAGE HTML );

产生了以下结果:

重定向是使用302完成的,尽管我使用的是res.status(404).

这根本不是故意的。因为没有发出404状态。

因此,我想我们应该用302301重定向404,并将404发送给/404-page

类似于:

代码语言:javascript
复制
// YOU'VE REQUESTED SOME /invalid-route

res.status(302).redirect(ROUTES.NOT_FOUND);

// NOW YOU ARE REQUESTING MY /404-page

res.status(404).send( // 404 PAGE HTML );

更新2:

这不像发送301时那样工作。

代码语言:javascript
复制
// THIS SENDS A 302, EVEN THOUGH SETTING 301

res.status(301).redirect(ROUTES.NOT_FOUND);

要在重定向上发送301,我必须这样做:

代码语言:javascript
复制
// THIS SYNTAX ALLOWS YOU TO CHOOSE THE STATUS CODE FOR THE REDIRECT

res.redirect(301,ROUTES.NOT_FOUND);
``´


  [1]: https://i.stack.imgur.com/jNnfN.png
EN

回答 1

Stack Overflow用户

发布于 2020-05-09 18:53:14

我的直觉是404页应该总是返回404状态。如果它附带了一个显示404消息的实际页面,那就没问题了。我认为这是直觉。

这是我对这个请求流的想法:

  1. 客户端获取/无效-路由->服务器
  2. Server 404 <Redirect to="/404-page"/> ->客户端
  3. Client GET / 404 -页面-> Server
  4. Server 404/404-页面-> Client

G 210

我认为混淆的原因是认为404页是一个现有的资源,在请求时应该返回200。我更喜欢将404页看作是一个较少的页面,而更多的是一个404状态代码,并使用一些可编辑的html来呈现代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61700068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档