{"id":823,"date":"2025-06-12T00:30:57","date_gmt":"2025-06-11T16:30:57","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/823.html"},"modified":"2025-06-12T00:30:57","modified_gmt":"2025-06-11T16:30:57","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8laravel%e4%b8%ad%e8%ae%be%e7%bd%ae%e8%87%aa%e5%ae%9a%e4%b9%89http%e5%93%8d%e5%ba%94%e4%bb%a3%e7%a0%81","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/823.html","title":{"rendered":"\u5982\u4f55\u5728Laravel\u4e2d\u8bbe\u7f6e\u81ea\u5b9a\u4e49HTTP\u54cd\u5e94\u4ee3\u7801"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312; Laravel &#20013;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#22810;&#31181;&#26041;&#24335;&#26469;&#35774;&#32622;&#33258;&#23450;&#20041; HTTP &#21709;&#24212;&#20195;&#30721;&#12290;&#20197;&#19979;&#26159;&#19968;&#20123;&#24120;&#35265;&#30340;&#26041;&#27861;&#65306;<\/p>\n<h3>&#26041;&#27861;&#19968;&#65306;&#20351;&#29992; <code>Response<\/code> &#31867;<\/h3>\n<pre><code class=\"language-php\">use IlluminateHttpResponse;\n\npublic function customResponse()\n{\n    \/\/ &#35774;&#32622;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#20026; 403 Forbidden\n    return response()-&gt;json(['message' =&gt; 'Access Denied'], 403);\n}<\/code><\/pre>\n<h3>&#26041;&#27861;&#20108;&#65306;&#20351;&#29992; <code>abort<\/code> &#20989;&#25968;<\/h3>\n<pre><code class=\"language-php\">use IlluminateHttpResponse;\nuse IlluminateSupportFacadesabort;\n\npublic function forbiddenResponse()\n{\n    \/\/ &#20351;&#29992; abort &#20989;&#25968;&#36820;&#22238; 403 Forbidden &#21709;&#24212;\n    abort(403, 'Access Denied');\n}<\/code><\/pre>\n<h3>&#26041;&#27861;&#19977;&#65306;&#20351;&#29992; <code>response<\/code> &#38745;&#24577;&#26041;&#27861;<\/h3>\n<pre><code class=\"language-php\">use IlluminateHttpResponse;\n\npublic function customResponse()\n{\n    \/\/ &#20351;&#29992; response &#38745;&#24577;&#26041;&#27861;&#36820;&#22238;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#21644; JSON &#25968;&#25454;\n    return Response::json(['message' =&gt; 'Custom Error'], 500);\n}<\/code><\/pre>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20551;&#35774;&#20320;&#26377;&#19968;&#20010;&#25511;&#21046;&#22120; <code>UserController<\/code>&#65292;&#20854;&#20013;&#21253;&#21547;&#19968;&#20010;&#26041;&#27861; <code>showUser<\/code>&#65292;&#20320;&#24819;&#26681;&#25454;&#29992;&#25143;&#26159;&#21542;&#23384;&#22312;&#26469;&#36820;&#22238;&#19981;&#21516;&#30340; HTTP &#29366;&#24577;&#30721;&#12290;<\/p>\n<pre><code class=\"language-php\">namespace AppHttpControllers;\n\nuse IlluminateHttpRequest;\nuse IlluminateHttpResponse;\n\nclass UserController extends Controller\n{\n    public function showUser($id)\n    {\n        $user = User::find($id);\n\n        if ($user) {\n            return response()-&gt;json(['user' =&gt; $user], 200);\n        } else {\n            return response()-&gt;json(['error' =&gt; 'User not found'], 404);\n        }\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#22914;&#26524;&#29992;&#25143;&#23384;&#22312;&#65292;&#21017;&#36820;&#22238; 200 OK &#21709;&#24212;&#65307;&#22914;&#26524;&#29992;&#25143;&#19981;&#23384;&#22312;&#65292;&#21017;&#36820;&#22238; 404 Not Found &#21709;&#24212;&#12290;<\/p>\n<h3>&#24635;&#32467;<\/h3>\n<p>&#22312; Laravel &#20013;&#35774;&#32622;&#33258;&#23450;&#20041; HTTP &#21709;&#24212;&#20195;&#30721;&#26377;&#22810;&#31181;&#26041;&#27861;&#65292;&#21253;&#25324;&#20351;&#29992; <code>Response<\/code> &#31867;&#12289;<code>abort<\/code> &#20989;&#25968;&#21644; <code>response<\/code> &#38745;&#24577;&#26041;&#27861;&#12290;&#36873;&#25321;&#21738;&#31181;&#26041;&#27861;&#21462;&#20915;&#20110;&#20320;&#30340;&#20855;&#20307;&#38656;&#27714;&#21644;&#39033;&#30446;&#32467;&#26500;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#20171;&#32461;<\/h2><p>&#22312;&#20351;&#29992;Laravel&#26500;&#24314;Web&#24212;&#29992;&#26102;&#65292;&#21487;&#33021;&#20250;&#36935;&#21040;&#38656;&#35201;&#20174;&#36335;&#30001;&#25110;&#25511;&#21046;&#22120;&#36820;&#22238;&#29305;&#23450;HTTP&#29366;&#24577;&#30721;&#30340;&#24773;&#20917;&#12290;HTTP&#29366;&#24577;&#20195;&#30721;&#26159;&#30001;&#20114;&#32852;&#32593;&#19978;&#30340;web&#24212;&#29992;&#31243;&#24207;&#26381;&#21153;&#22120;&#32473;&#20986;&#30340;&#26631;&#20934;&#21709;&#24212;&#20195;&#30721;&#12290;&#23427;&#20204;&#24110;&#21161;&#30830;&#23450;HTTP&#35831;&#27714;&#30340;&#32467;&#26524;&#65292;&#20363;&#22914;&#26159;&#21542;&#25104;&#21151;&#12289;&#37325;&#23450;&#21521;&#36824;&#26159;&#20986;&#38169;&#12290;&#22312;&#36825;&#31687;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#23398;&#20064;&#22914;&#20309;&#22312;Laravel&#20013;&#35774;&#32622;&#33258;&#23450;&#20041;HTTP&#21709;&#24212;&#20195;&#30721;&#65292;&#36825;&#23545;&#20110;&#21019;&#24314;&#19968;&#20010;&#24378;&#22823;&#30340;&#21644;&#26631;&#20934;&#20860;&#23481;&#30340;API&#25110;Web&#24212;&#29992;&#31243;&#24207;&#38750;&#24120;&#37325;&#35201;&#12290;<\/p><p>&#21069;&#32622;&#26465;&#20214;<\/p><p>&#24744;&#36873;&#25321;&#30340;&#25991;&#26412;&#32534;&#36753;&#22120;&#25110;&#38598;&#25104;&#24320;&#21457;&#29615;&#22659;&#65288;IDE&#65289;&#26159;&#20160;&#20040;&#65311;<\/p><p>&#20381;&#36182;&#31649;&#29702;&#22120; &#8211; Composer<\/p><p>&#24050;&#32463;&#23433;&#35013;&#20102;Laravel&#26694;&#26550;&#65288;&#26412;&#25351;&#21335;&#20351;&#29992;&#30340;&#29256;&#26412;&#65306;9.x&#65289;&#12290;<\/p><p>&#19968;&#20010;&#22522;&#26412;&#30340;PHP&#21644;Laravel&#29702;&#35299;&#12290;<\/p><h2>&#35774;&#32622;&#33258;&#23450;&#20041;HTTP&#21709;&#24212;&#30721;<\/h2><p>&#22312;Laravel&#20013;&#35774;&#32622;&#33258;&#23450;&#20041;HTTP&#21709;&#24212;&#20195;&#30721;&#30340;&#26041;&#27861;&#26377;&#22810;&#31181;&#65292;&#20855;&#20307;&#21462;&#20915;&#20110;&#24744;&#30340;&#29305;&#23450;&#38656;&#27714;&#12290;&#20197;&#19979;&#26159;&#20960;&#31181;&#31034;&#20363;&#20195;&#30721;&#65292;&#35828;&#26126;&#19981;&#21516;&#30340;&#23454;&#29616;&#26041;&#24335;&#65306;<\/p><h3>&#27491;&#22312;&#20351;&#29992;&#20013;&#12290;<code>response()<\/code>&#21161;&#25163;&#20989;&#25968;<\/h3><p>Laravel &#25552;&#20379;&#20102;&#12290;<code>response()<\/code>&#21161;&#25163;&#65292;&#20351;&#24471;&#21019;&#24314;&#24102;&#26377;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#30340;&#21709;&#24212;&#21464;&#24471;&#38750;&#24120;&#31616;&#21333;&#12290;&#36825;&#37324;&#26377;&#19968;&#20010;&#31616;&#21333;&#30340;&#20363;&#23376;&#65306;<\/p><pre><code>Route::get('\/custom-response', function () {\n    return response('Content', 418);\n});\n<\/code><\/pre><p>&#22312;&#36825;&#31181;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#23450;&#20041;&#20102;&#19968;&#20010;&#25351;&#21521;&#38381;&#21253;&#30340;&#36335;&#30001;&#12290;&#23427;&#20351;&#29992;&#20102;&#12290;<code>response()<\/code>&#36741;&#21161;&#20989;&#25968;&#36820;&#22238;&#19968;&#20123;&#20869;&#23481;&#65288;&ldquo;Content&rdquo;&#65289;&#65292;&#20197;HTTP&#29366;&#24577;&#30721;418&#34920;&#31034;&ldquo;&#25105;&#26159;&#19968;&#22774;&#33590;&rdquo;&#12290;&#36825;&#20010;&#26377;&#36259;&#30340;&#20195;&#30721;&#30830;&#23454;&#35753;&#20154;&#24525;&#20426;&#19981;&#31105;&#12290;<\/p><h3>&#27491;&#22312;&#20351;&#29992;&#12290;<code>Response<\/code>&#38376;&#38754;&#65292;&#22806;&#35980;<\/h3><p>&#21478;&#19968;&#31181;&#25351;&#23450;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#30340;&#26041;&#27861;&#26159;&#36890;&#36807;&#23427;&#12290;<code>Response<\/code>facade&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#20351;&#29992;&#36825;&#31181;&#26041;&#27861;&#21457;&#36865;404&#29366;&#24577;&#20195;&#30721;&#30340;&#31034;&#20363;&#65306;<\/p><pre><code>use IlluminateSupportFacadesResponse;\n\nRoute::get('\/not-found', function () {\n    return Response::make('Not Found', 404);\n});\n<\/code><\/pre><p>&#23545;&#19981;&#36215;&#65292;&#25105;&#26080;&#27861;&#29702;&#35299;&#36825;&#21477;&#35805;&#12290;<code>Response::make()<\/code>&#26041;&#27861;&#21019;&#24314;&#19968;&#20010;&#21709;&#24212;&#65292;&#24102;&#26377;&#32473;&#23450;&#30340;&#20869;&#23481;&#21644;&#29366;&#24577;&#20195;&#30721;&#12290;&#27492;&#31034;&#20363;&#36820;&#22238;&#19968;&#20010;&ldquo;&#26410;&#25214;&#21040;&rdquo;&#28040;&#24687;&#65292;&#29366;&#24577;&#30721;&#20026;404&#65292;&#34920;&#31034;&#35831;&#27714;&#30340;&#36164;&#28304;&#26410;&#34987;&#25214;&#21040;&#12290;<\/p><h3>&#35774;&#32622;&#21709;&#24212;&#22836;&#24182;&#28155;&#21152;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;<\/h3><p>&#26377;&#26102;&#65292;&#20320;&#38656;&#35201;&#22312;&#21709;&#24212;&#20013;&#35774;&#32622;&#33258;&#23450;&#20041;&#22836;&#12290;&#20320;&#21487;&#20197;&#36890;&#36807;&#20351;&#29992;&#20197;&#19979;&#20195;&#30721;&#26469;&#23454;&#29616;&#65306;<code>response()<\/code>&#21487;&#20197;&#30340;&#65292;&#35831;&#25552;&#20379;&#26356;&#22810;&#30340;&#19978;&#19979;&#25991;&#20449;&#24687;&#65292;&#20197;&#20415;&#25105;&#33021;&#22815;&#26356;&#22909;&#22320;&#29702;&#35299;&#24744;&#30340;&#38656;&#27714;&#24182;&#36827;&#34892;&#20934;&#30830;&#30340;&#32763;&#35793;&#12290;<\/p><pre><code>Route::get('\/with-headers', function () {\n    return response('Content', 202)\n                 -&gt;header('Content-Type', 'text\/plain')\n                 -&gt;header('Custom-Header', 'HeaderValue');\n});\n<\/code><\/pre><p>&#22312;&#35813;&#20195;&#30721;&#29255;&#27573;&#20013;&#65292;&#25105;&#20204;&#36820;&#22238;&#24102;&#26377;&#29366;&#24577;&#30721;202&#30340;&#21709;&#24212;&#20869;&#23481;&#65292;&#24182;&#28155;&#21152;&#33258;&#23450;&#20041;&#22836;&#20449;&#24687;&#21040;&#21709;&#24212;&#20013;&#12290;<\/p><h3>&#21019;&#24314;&#24102;&#26377;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#30340;JSON&#21709;&#24212;&#12290;<\/h3><p>&#22312;&#22788;&#29702;API&#24320;&#21457;&#26102;&#65292;&#24744;&#36890;&#24120;&#38656;&#35201;&#36820;&#22238;JSON&#21709;&#24212;&#12290;Laravel&#25552;&#20379;&#20102;&#19968;&#31181;&#31616;&#21333;&#30340;&#26041;&#27861;&#26469;&#23454;&#29616;&#36825;&#19968;&#28857;&#12290;<code>JsonResponse<\/code>&#22352;&#22909;&#65292;&#25105;&#20204;&#24320;&#22987;&#12290;<\/p><pre><code>use IlluminateHttpJsonResponse;\n\nRoute::get('\/json-response', function () {\n    return new JsonResponse(['message' =&gt; 'Hello World'], 200);\n});\n<\/code><\/pre><p>&#24744;&#20063;&#21487;&#20197;&#20351;&#29992;&#23427;&#12290;<code>response()<\/code>&#21161;&#35760;&#21151;&#33021;&#65292;&#36820;&#22238;&#24102;&#26377;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#30340;JSON&#21709;&#24212;&#65306;<\/p><pre><code>Route::get('\/json-shortcut', function () {\n    return response()-&gt;json(['message' =&gt; 'Hello World'], 200);\n});\n<\/code><\/pre><p>&#25265;&#27465;&#65292;&#25105;&#27809;&#33021;&#29702;&#35299;&#24744;&#30340;&#38382;&#39064;&#65292;&#35831;&#37325;&#26032;&#25551;&#36848;&#19968;&#19979;&#24744;&#24819;&#34920;&#36798;&#30340;&#20869;&#23481;&#65292;&#35874;&#35874;&#65281;<code>JsonResponse<\/code>constructor &#21644; constructor &#37117;&#21487;&#20197;&#20316;&#20026;&#21517;&#35789;&#20351;&#29992;&#65292;&#34920;&#31034;&ldquo;&#26500;&#36896;&#22120;&rdquo;&#25110;&ldquo;&#24314;&#36896;&#32773;&rdquo;&#12290;&#22312;&#32534;&#31243;&#20013;&#65292;&#36890;&#24120;&#25351;&#30340;&#26159;&#19968;&#20010;&#23545;&#35937;&#21019;&#24314;&#30340;&#36807;&#31243;&#25110;&#32773;&#26041;&#27861;&#65292;&#29992;&#20110;&#29983;&#25104;&#29305;&#23450;&#31867;&#22411;&#30340;&#23545;&#35937;&#23454;&#20363;&#12290;<code>response()-&gt;json()<\/code>&#23558;&#25968;&#25454;&#20316;&#20026;&#31532;&#19968;&#20010;&#21442;&#25968;&#65292;&#29366;&#24577;&#30721;&#20316;&#20026;&#31532;&#20108;&#20010;&#21442;&#25968;&#12290;<\/p><h2>&#20351;&#29992;&#33258;&#23450;&#20041;HTTP&#21709;&#24212;&#24182;&#22788;&#29702;&#24322;&#24120;&#12290;<\/h2><p>Laravel&#20801;&#35768;&#24744;&#22312;&#38598;&#20013;&#20301;&#32622;&#22788;&#29702;&#24322;&#24120;&#65306;&#24322;&#24120;&#22788;&#29702;&#22120;&#12290;&#24403;&#21457;&#29983;&#24322;&#24120;&#26102;&#65292;&#24744;&#21487;&#20197;&#36820;&#22238;&#33258;&#23450;&#20041;&#29366;&#24577;&#20195;&#30721;&#12290;&#36825;&#37324;&#26159;&#22914;&#20309;&#20570;&#21040;&#30340;&#65306;<\/p><pre><code>use SymfonyComponentHttpKernelExceptionHttpException;\n\n\/\/ Inside your controller or other business logic\nthrow new HttpException(403, 'Forbidden');<\/code><\/pre><p>&#36825;&#26465;&#20195;&#30721;&#34892;&#20250;&#29983;&#25104;&#19968;&#20010;&#29366;&#24577;&#30721;&#20026;403&#24182;&#38468;&#24102;&ldquo;Forbidden&rdquo;&#28040;&#24687;&#30340;&#21709;&#24212;&#12290;<\/p><h2>&#38169;&#35823;&#21709;&#24212;&#21644;HTTP&#24322;&#24120;<\/h2><p>Laravel &#25552;&#20379;&#20102;&#22810;&#31181;&#20869;&#32622;&#24322;&#24120;&#65292;&#23545;&#24212;&#19981;&#21516;&#30340; HTTP &#29366;&#24577;&#30721;&#65292;&#20363;&#22914;<code>NotFoundHttpException<\/code>&#21734;&#65292;&#26159;&#30340;&#12290;<code>MethodNotAllowedHttpException<\/code>&#20320;&#21487;&#20197;&#20351;&#29992;&#36825;&#20123;&#26469;&#24555;&#36895;&#26631;&#20934;&#21270;API&#30340;&#38169;&#35823;&#21709;&#24212;&#12290;<\/p><pre><code>use IlluminateDatabaseEloquentModelNotFoundException;\n\nRoute::get('\/user\/{id}', function ($id) {\n    \/\/ Assuming you have a User model and you are looking for a specific user by id\n    $user = User::findOrFail($id);\n    \/\/ If the user is not found, a ModelNotFoundException will be thrown\n    \/\/ This can be caught in your app\/Exceptions\/Handler.php file where you\n    \/\/ can return a custom JSON response with the required status code:\n\n    \/\/ ...\n\n    \/\/ Inside the render() method of AppExceptionsHandler class\n    if ($exception instanceof ModelNotFoundException) {\n        return response()-&gt;json(['message' =&gt; 'User not found'], 404);\n    }\n\n    \/\/ Continue with the normal exception handling\n    return parent::render($request, $exception);\n});\n<\/code><\/pre><p>&#22312;&#36825;&#20010;&#20195;&#30721;&#20013;&#65292;&#25105;&#20204;&#27491;&#22312;&#20351;&#29992;Laravel&#30340;&#12290;<code>findOrFail<\/code>&#26041;&#27861;&#65292;&#35813;&#26041;&#27861;&#20250;&#33258;&#21160;&#25243;&#20986;&#19968;&#20010;<code>ModelNotFoundException<\/code>&#22914;&#26524;&#29992;&#25143;&#19981;&#23384;&#22312;&#65292;&#21487;&#20197;&#22312;&#24322;&#24120;&#22788;&#29702;&#22120;&#20013;&#25429;&#33719;&#36825;&#20010;&#24322;&#24120;&#24182;&#36820;&#22238;&#19968;&#20010;&#24102;&#26377;&#33258;&#23450;&#20041;&#29366;&#24577;&#20195;&#30721;&#30340;&#21709;&#24212;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;Laravel&#20013;&#35774;&#32622;&#33258;&#23450;&#20041;HTTP&#29366;&#24577;&#30721;&#38750;&#24120;&#31616;&#21333;&#65292;&#36825;&#20026;&#24744;&#25552;&#20379;&#20102;&#26377;&#25928;&#20256;&#36798;HTTP&#35831;&#27714;&#29366;&#24577;&#30340;&#28789;&#27963;&#24615;&#12290;&#26080;&#35770;&#26159;&#19982;web&#36335;&#30001;&#19968;&#36215;&#38656;&#35201;&#21521;&#29992;&#25143;&#25552;&#20379;&#38169;&#35823;&#28040;&#24687;&#36824;&#26159;&#24320;&#21457;API&#26102;&#38656;&#35201;&#26126;&#30830;&#30340;&#29366;&#24577;&#20195;&#30721;&#36890;&#20449;&#26041;&#26696;&#65292;&#20102;&#35299;&#22914;&#20309;&#25511;&#21046;&#36825;&#20123;&#21709;&#24212;&#26159;&#29616;&#20195;Web&#24320;&#21457;&#20013;&#30340;&#19968;&#20010;&#20851;&#38190;&#37096;&#20998;&#12290;&#36890;&#36807;&#26412;&#25351;&#21335;&#25552;&#20379;&#30340;&#31034;&#20363;&#21644;&#26041;&#27861;&#65292;&#29616;&#22312;&#24744;&#21487;&#20197;&#23454;&#29616;&#33258;&#24049;&#30340;&#33258;&#23450;&#20041;HTTP&#21709;&#24212;&#20195;&#30721;&#22312;&#24744;&#30340;Laravel&#24212;&#29992;&#31243;&#24207;&#20013;&#12290;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#35201;&#22312; Laravel &#20013;&#35774;&#32622;&#33258;&#23450;&#20041; HTTP &#21709;&#24212;&#20195;&#30721;&#65292;&#20320;&#38656;&#35201;&#25191;&#34892;&#20197;&#19979;&#27493;&#39588;&#65306;<\/p>\n<ol>\n<li>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#24050;&#23433;&#35013;&#24182;&#28608;&#27963;&#20102; Laravel &#30340;&#26368;&#26032;&#29256;&#26412;&#12290;<\/p>\n<\/li>\n<li>\n<p>&#22312;&#39033;&#30446;&#30340; <code>config\/app.php<\/code> &#25991;&#20214;&#20013;&#25214;&#21040; <code>providers<\/code> &#37096;&#20998;&#65292;&#28982;&#21518;&#28155;&#21152;&#20197;&#19979;&#34892;&#65306;<\/p>\n<pre><code class=\"language-php\">'web' =&gt; [\n\/\/ ...\nIlluminateSupportFacadesArtisan::make('provider:Web', ['name' =&gt; 'IlluminateHttpMiddlewareHandleCors']),\n],<\/code><\/pre>\n<p>&#36825;&#23558;&#21551;&#29992; CORS (&#36328;&#28304;&#36164;&#28304;&#20849;&#20139;) &#25903;&#25345;&#12290;<\/p>\n<\/li>\n<li>\n<p>&#29616;&#22312;&#65292;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#20013;&#38388;&#20214;&#26469;&#22788;&#29702; CORS &#35831;&#27714;&#12290;&#22312; <code>app\/Http\/Middleware<\/code> &#30446;&#24405;&#19979;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25991;&#20214;&#65292;&#20363;&#22914; <code>CORSMiddleware.php<\/code>&#65292;&#24182;&#32534;&#20889;&#22914;&#19979;&#20195;&#30721;&#65306;<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppHttpMiddleware;\n\nuse Closure;\nuse IlluminateHttpRequest;\nuse SymfonyComponentHttpFoundationResponse;\n\nclass CORSMiddleware\n{\n    \/**\n     * Handle an incoming request.\n     *\n     * @param  Closure(IlluminateHttpRequest): (SymfonyComponentHttpFoundationResponse)  $next\n     *\/\n    public function handle(Request $request, Closure $next)\n    {\n        if ($request-&gt;headers-&gt;has('Origin')) {\n            return response()-&gt;json(['success' =&gt; true], Response::HTTP_OK);\n        }\n\n        return redirect('\/');\n    }\n}<\/code><\/pre>\n<ol start=\"4\">\n<li>&#23558;&#26032;&#30340; CORS &#20013;&#38388;&#20214;&#28155;&#21152;&#21040; <code>config\/framework.php<\/code> &#25991;&#20214;&#30340; <code>middleware<\/code> &#21015;&#34920;&#20013;&#65306;<\/li>\n<\/ol>\n<pre><code class=\"language-php\">'middleware' =&gt; [\n    \/\/ ...\n    'cors',\n],<\/code><\/pre>\n<ol start=\"5\">\n<li>&#26368;&#21518;&#65292;&#38656;&#35201;&#22312; <code>routes\/web.php<\/code> &#20013;&#21551;&#29992; CORS&#65306;<\/li>\n<\/ol>\n<pre><code class=\"language-php\">Route::get('\/', function () {\n    return view('welcome');\n})-&gt;name('home');\n\n\/\/ &#20801;&#35768;&#36328;&#22495;&#35831;&#27714;\nRoute::middleware([\n    'cors',\n])-&gt;group(function () {\n    Route::get('\/api\/data', 'ApiController@index')-&gt;name('api.index');\n});<\/code><\/pre>\n<p>&#29616;&#22312;&#65292;&#20320;&#30340; Laravel &#24212;&#29992;&#31243;&#24207;&#24212;&#35813;&#33021;&#22815;&#22788;&#29702;&#26469;&#33258;&#19981;&#21516;&#26469;&#28304;&#30340; CORS &#35831;&#27714;&#65292;&#24182;&#36820;&#22238;&#36866;&#24403;&#30340; HTTP &#21709;&#24212;&#20195;&#30721;&#65288;&#36890;&#24120;&#26159; 200 OK&#65289;&#12290;<\/p>\n<p>&#22914;&#26524;&#20320;&#24819;&#35201;&#25511;&#21046;&#20855;&#20307;&#21738;&#20010; HTTP &#26041;&#27861;&#21487;&#20197;&#34987;&#20801;&#35768;&#65292;&#21487;&#20197;&#22312; <code>cors.php<\/code> &#25991;&#20214;&#20013;&#25351;&#23450;&#65292;&#20363;&#22914;&#65306;<\/p>\n<pre><code class=\"language-php\">return [\n    'allowed_methods' =&gt; ['GET', 'POST', 'PUT', 'DELETE'],\n];<\/code><\/pre>\n<p>&#36825;&#26679;&#65292;&#21482;&#26377; GET &#21644; POST &#35831;&#27714;&#20250;&#34987;&#20801;&#35768;&#12290;&#20320;&#21487;&#20197;&#26681;&#25454;&#23454;&#38469;&#38656;&#27714;&#35843;&#25972;&#36825;&#20123;&#26041;&#27861;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#22312; Laravel &#20013;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#22810;&#31181;&#26041;&#24335;&#26469;&#35774;&#32622;&#038;#3..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-823","my1js","type-my1js","status-publish","hentry","my1js2nav-laravel"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/823","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=823"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=823"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=823"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}