簡體   English   中英

Laravel - 如何從控制器設置 HTTP 響應狀態代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM