gpt4 book ai didi

php - Laravel - 如何从 Controller 设置 HTTP 响应状态代码

转载 作者:行者123 更新时间:2023-12-04 13:29:29 26 4
gpt4 key购买 nike

我是 laravel 的新手,我成功地将用户从 Controller 引导到适当的 View ,但在某些情况下我想设置一个 http 状态代码,但它总是返回 200 的响应代码无论我发送什么。

这是我的测试 Controller 功能的代码:

public function index()
{
$data=array();

return response()->view('layouts.default', $data, 201);
}

如果我在路由中使用相同的代码,它将返回正确的 http 状态代码,正如我在命令行中使用 curl -I 调用页面时看到的那样。
curl -I http://localhost/

它在 Controller 中不起作用,但在路由调用中起作用有什么原因吗?

我敢肯定,作为新手,我只是误解了一些东西,但即使是以下代码也能在路由中运行,但不能在 Controller 中运行:
public function index()
{
abort(404);
}

我究竟做错了什么?

最佳答案

解决方案

您可以使用所提到的 here .您将需要返回这样的响应:

public function index()
{
$data = ['your', 'data'];

return response()->view('layouts.default', $data)->setStatusCode(404);
} // ^^^^^^^^^^^^^^^^^^^

注意 setStatusCode($integer)方法。

选择

您可以在返回 View 时设置额外的标题以指定额外的数据,如 documentation状态:

Attaching Headers To Responses

Keep in mind that most response methods are chainable, allowing for the fluent construction of response instances. For example, you may use the header method to add a series of headers to the response before sending it back to the user:

return response($content)
->header('Content-Type', $type)
->header('X-Header-One', 'Header Value')
->header('X-Header-Two', 'Header Value');

关于php - Laravel - 如何从 Controller 设置 HTTP 响应状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48877039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com