![](/img/trans.png)
[英]How To Return a Http Response Status Code in Laravel response()->download()?
[英]Laravel - How to set HTTP response status code from Controller
我是 laravel 的新手,我成功地将用户从控制器引导到适当的视图,但在某些情况下,我想设置一个 http 状态代码,但无论我发送什么,它总是返回200
的响应代码。
这是我的测试控制器功能的代码:
public function index()
{
$data=array();
return response()->view('layouts.default', $data, 201);
}
如果我在路由中使用相同的代码,它将返回正确的 http 状态代码,正如我在命令行中使用 curl -I 调用页面时看到的那样。
curl -I http://localhost/
它在控制器中不起作用,但在路由调用中起作用有什么原因吗?
我敢肯定,作为新手,我只是误解了一些东西,但即使是以下代码也能在路由中运行,但不能在控制器中运行:
public function index()
{
abort(404);
}
我做错了什么?
您可以使用这里提到的内容。 您将需要返回这样的响应:
public function index()
{
$data = ['your', 'data'];
return response()->view('layouts.default', $data)->setStatusCode(404);
} // ^^^^^^^^^^^^^^^^^^^
注意setStatusCode($integer)
方法。
您可以在返回视图时设置额外的标题以指定额外的数据,如文档所述:
将标题附加到响应
请记住,大多数响应方法都是可链接的,从而可以流畅地构建响应实例。 例如,您可以使用 header 方法在将响应发送回用户之前向响应添加一系列标头:
return response($content) ->header('Content-Type', $type) ->header('X-Header-One', 'Header Value') ->header('X-Header-Two', 'Header Value');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.