当前位置: 首页 > 知识库问答 >
问题:

在Http状态码404上返回附加值的最佳方法

吴开宇
2023-03-14

有时,在服务器级别,我会返回一些额外的信息以及HTTP404

例如,它不会只返回一个404,这可能会让我的客户困惑路由是否正确,它还会收到类似的消息

标识符“abc”未知

我通常将内容类型设置为text/plain,并在content

另一种选择是设置ReasonPhrase

哪种方式/惯例最好?设置内容或设置理由短语

共有2个答案

谢翰学
2023-03-14

您可以使用自定义错误响应,并覆盖404和您想要访问的任何其他错误Spring MVC:如何返回自定义404错误页面?

创建视图并在app/Exception/Handler.php中设置此代码:

/*将异常渲染为响应. * * @参数\Illumate\Http\Request$request*@参数\Exception$e*@return\Illumate\Http\Response

*/

公共函数呈现($请求,例外$e)

{

if($e instanceof NotFoundHttpException)

{

    return response()->view('missing', [], 404);

}

return parent::render($request, $e);

}

设置此用途以使其工作:

使用Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

欲了解更多信息,请访问

https://httpd.apache.org/docs/2.4/custom-error.html

https://docs.microsoft.com/en-us/aspnet/web-forms/overview/older-versions-getting-started/deploying-web-site-projects/displaying-a-custom-error-page-cs

芮学
2023-03-14

错误消息应该放在响应正文(内容)中,而不是响应原因短语

根据RFC 2616:

原因短语旨在对状态代码进行简短的文本描述。。。客户不需要检查或显示原因短语。

一些解释:

  1. 原因短语是状态代码的简短文本描述,它应该描述状态代码本身,而不是自定义错误消息。如果自定义错误消息很长,或者消息具有JSON结构,那么使用原因短语肯定违反了规范
 类似资料:
  • 问题内容: 我看到了一些类似的问题(像这样),但是没有一个问题专门解决这个问题。 因此,Google 现在支持SPA,并且大多数网络浏览器都支持HTML5 pushState 。 我的AngularJS(但可能是任何JS东西)网站都使用URL来确定API路由。然后执行API调用,然后相应地呈现内容。 但是,由于 每个URL都 返回HTTP 200状态代码(包括example.com/get-fre

  • 我正在按照一些教程从头开始建立一个spring mvc项目。最初,我将web应用程序配置为在Tomcat中运行。我编写了一个简单的controller类,请求点击“/”。但tomcat总是向我显示“HTTP状态404-找不到”错误。 我看了很多这样的问题,但那些答案对我都不起作用 删除tomcat安装并重新配置。当点击localhost:8080/时,我将获得tomcat主页。 检查了代码的拼写

  • 问题内容: 如果我返回一个对象: 状态代码将为200。如何将其更改为201,并显示一条消息并与json对象一起发送? 我不知道是否有一种方法可以在Laravel中设置状态代码。 问题答案: 您可以用来设置HTTP响应代码。 如果未传递任何参数,则http_response_code将获取当前状态码。如果您传递参数,它将设置响应代码。 对于Laravel:

  • 本文向大家介绍HTTP 返回状态码有哪些?相关面试题,主要包含被问及HTTP 返回状态码有哪些?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 100 Continue 继续。客户端应继续其请求 101 Switching Protocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议 200 OK 请求成功。一般用于GET与POST

  • 问题内容: 我们正在使用Flask作为我们的API之一,我只是想知道是否有人知道如何返回HTTP响应201? 对于诸如404之类的错误,我们可以致电: 但是对于201我得到 LookupError:201都不例外 我是否需要创建自己的例外,像这样的文档? 问题答案: 你可以在这里阅读。

  • 问题内容: 我有一个状态数组,比方说this.state.arr。我想向此状态属性添加一些内容,然后更改更多属性。 选项1 选项2 所以..我知道this.state应该被视为不可变的。但是可以像在选项1中那样使用它还是可以通过它设置状态,还是可以像在选项2中那样使用它,这样总是总是首先在内存中进行复制 问题答案: 使用concat的另一种简单方法: