{"id":904,"date":"2025-06-12T02:25:22","date_gmt":"2025-06-11T18:25:22","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/904.html"},"modified":"2025-06-12T02:25:22","modified_gmt":"2025-06-11T18:25:22","slug":"%e8%a7%a3%e5%86%b3laravel%e9%94%99%e8%af%af%ef%bc%9a%e8%ae%bf%e9%97%ae%e8%a2%abcors%e7%ad%96%e7%95%a5%e9%98%bb%e6%ad%a2%ef%bc%883%e7%a7%8d%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88%ef%bc%89","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/904.html","title":{"rendered":"\u89e3\u51b3Laravel\u9519\u8bef\uff1a\u8bbf\u95ee\u88abCORS\u7b56\u7565\u963b\u6b62\uff083\u79cd\u89e3\u51b3\u65b9\u6848\uff09"},"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;&#20351;&#29992; Laravel &#26102;&#65292;&#22914;&#26524;&#20320;&#36935;&#21040;&ldquo;&#35775;&#38382;&#34987; CROS &#31574;&#30053;&#38459;&#27490;&rdquo;&#30340;&#38169;&#35823;&#65292;&#36890;&#24120;&#26159;&#22240;&#20026;&#27983;&#35272;&#22120;&#30340;&#23433;&#20840;&#35774;&#32622;&#38459;&#27490;&#20102;&#36328;&#22495;&#35831;&#27714;&#12290;&#20197;&#19979;&#26159;&#19968;&#20123;&#24120;&#35265;&#30340;&#35299;&#20915;&#26041;&#26696;&#65306;<\/p>\n<h3>1. &#21551;&#29992; CORS<\/h3>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#22312; Laravel &#20013;&#21551;&#29992; CORS&#12290;&#20320;&#21487;&#20197;&#36890;&#36807;&#20462;&#25913; <code>app\/Http\/Middleware\/CorsMiddleware.php<\/code> &#25991;&#20214;&#26469;&#23454;&#29616;&#36825;&#19968;&#28857;&#12290;<\/p>\n<pre><code class=\"language-php\">namespace AppHttpMiddleware;\n\nuse Closure;\nuse IlluminateSupportFacadesResponse;\n\nclass CorsMiddleware\n{\n    public function handle($request, Closure $next)\n    {\n        return Response::make('Hello World', 200, [\n            'Access-Control-Allow-Origin' =&gt; '*',\n            'Access-Control-Allow-Methods' =&gt; 'GET, POST, PUT, DELETE, OPTIONS',\n            'Access-Control-Allow-Headers' =&gt; 'Content-Type, Authorization'\n        ]);\n    }\n}<\/code><\/pre>\n<p>&#28982;&#21518;&#65292;&#22312; <code>app\/Kernel.php<\/code> &#25991;&#20214;&#20013;&#27880;&#20876;&#36825;&#20010;&#20013;&#38388;&#20214;&#65306;<\/p>\n<pre><code class=\"language-php\">protected $middleware = [\n    \/\/ &#20854;&#20182;&#20013;&#38388;&#20214;...\n    AppHttpMiddlewareCorsMiddleware::class,\n];<\/code><\/pre>\n<h3>2. &#20351;&#29992; JSONP<\/h3>\n<p>&#22914;&#26524;&#20320;&#21482;&#26159;&#38656;&#35201;&#20174;&#26576;&#20010;&#26381;&#21153;&#22120;&#33719;&#21462;&#25968;&#25454;&#65292;&#24182;&#19988;&#19981;&#24819;&#22788;&#29702; CORS&#65292;&#21487;&#20197;&#32771;&#34385;&#20351;&#29992; JSONP&#12290;JSONP &#26159;&#19968;&#31181;&#20801;&#35768;&#36328;&#22495;&#36164;&#28304;&#20849;&#20139;&#30340;&#25216;&#26415;&#65292;&#23427;&#36890;&#36807;&#22312;&#21709;&#24212;&#22836;&#20013;&#28155;&#21152;&#19968;&#20010; <code>callback<\/code> &#21442;&#25968;&#26469;&#23454;&#29616;&#12290;<\/p>\n<p>&#20363;&#22914;&#65292;&#22914;&#26524;&#20320;&#26377;&#19968;&#20010; API &#31471;&#28857; <code>\/api\/data<\/code>&#65292;&#20320;&#21487;&#20197;&#36825;&#26679;&#35843;&#29992;&#23427;&#65306;<\/p>\n<pre><code class=\"language-javascript\">var callback = \"handleResponse\";\nvar url = \"\/api\/data?callback=\" + callback;\n\n$.ajax({\n    type: \"GET\",\n    url: url,\n    dataType: \"jsonp\"\n});<\/code><\/pre>\n<h3>3. &#20462;&#25913;&#26381;&#21153;&#22120;&#37197;&#32622;<\/h3>\n<p>&#22914;&#26524;&#20320;&#26377;&#26435;&#38480;&#20462;&#25913;&#26381;&#21153;&#22120;&#31471;&#30340;&#37197;&#32622;&#65292;&#21487;&#20197;&#23581;&#35797;&#22312;&#26381;&#21153;&#22120;&#31471;&#21551;&#29992; CORS&#12290;&#20855;&#20307;&#26041;&#27861;&#21462;&#20915;&#20110;&#20320;&#20351;&#29992;&#30340;&#26381;&#21153;&#22120;&#36719;&#20214;&#21644;&#32534;&#31243;&#35821;&#35328;&#12290;<\/p>\n<h4>Nginx &#31034;&#20363;<\/h4>\n<p>&#20551;&#35774;&#20320;&#20351;&#29992;&#30340;&#26159; Nginx&#65292;&#21487;&#20197;&#22312;&#20320;&#30340;&#26381;&#21153;&#22120;&#37197;&#32622;&#25991;&#20214;&#20013;&#28155;&#21152;&#22914;&#19979;&#20869;&#23481;&#65306;<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    server_name yourdomain.com;\n\n    location \/ {\n        # &#20854;&#20182;&#37197;&#32622;...\n\n        add_header 'Access-Control-Allow-Origin' '*';\n        add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';\n        add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';\n\n        proxy_pass http:\/\/yourlaravelapp;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}<\/code><\/pre>\n<h4>Apache &#31034;&#20363;<\/h4>\n<p>&#20551;&#35774;&#20320;&#20351;&#29992;&#30340;&#26159; Apache&#65292;&#21487;&#20197;&#22312;&#20320;&#30340;&#34394;&#25311;&#20027;&#26426;&#37197;&#32622;&#25991;&#20214;&#20013;&#28155;&#21152;&#22914;&#19979;&#20869;&#23481;&#65306;<\/p>\n<pre><code class=\"language-apache\">&lt;VirtualHost *:80&gt;\n    ServerName yourdomain.com\n\n    &lt;Directory \/path\/to\/your\/laravel\/app\/public&gt;\n        Options Indexes FollowSymLinks MultiViews\n        AllowOverride All\n        Require all granted\n    &lt;\/Directory&gt;\n\n    ProxyPass \/ http:\/\/localhost:8000\/\n    ProxyPassReverse \/ http:\/\/localhost:8000\/\n\n    Header set Access-Control-Allow-Origin \"*\"\n    Header set Access-Control-Allow-Methods \"GET, POST, PUT, DELETE, OPTIONS\"\n    Header set Access-Control-Allow-Headers \"Content-Type, Authorization\"\n\n    ErrorLog ${APACHE_LOG_DIR}\/error.log\n    CustomLog ${APACHE_LOG_DIR}\/access.log combined\n&lt;\/VirtualHost&gt;<\/code><\/pre>\n<p>&#36890;&#36807;&#20197;&#19978;&#26041;&#27861;&#65292;&#20320;&#24212;&#35813;&#33021;&#22815;&#35299;&#20915; Laravel &#20013;&#30340;&ldquo;&#35775;&#38382;&#34987; CROS &#31574;&#30053;&#38459;&#27490;&rdquo;&#30340;&#38382;&#39064;&#12290;&#36873;&#25321;&#21738;&#31181;&#26041;&#27861;&#21462;&#20915;&#20110;&#20320;&#30340;&#20855;&#20307;&#38656;&#27714;&#21644;&#26381;&#21153;&#22120;&#29615;&#22659;&#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>&#29702;&#35299;Laravel&#20013;&#30340;CORS&#65288;&#36328;&#28304;&#36164;&#28304;&#20849;&#20139;&#65289;&#31574;&#30053;&#38169;&#35823;<\/h2><p>&#36328;&#22495;&#36164;&#28304;&#20849;&#20139;&#65288;CORS&#65292;Cross-Origin Resource Sharing&#65289;&#26159;&#19968;&#31181;&#22312;&#27983;&#35272;&#22120;&#20013;&#23454;&#29616;&#30340;&#23433;&#20840;&#29305;&#24615;&#65292;&#29992;&#20110;&#38450;&#27490;web&#24212;&#29992;&#31243;&#24207;&#21521;&#19981;&#21516;&#22495;&#21517;&#30340;&#26381;&#21153;&#22120;&#21457;&#20986;&#35831;&#27714;&#12290;&#36825;&#20010;&#38169;&#35823;&#22312;Laravel&#26694;&#26550;&#19979;&#30340;API&#24320;&#21457;&#36807;&#31243;&#20013;&#32463;&#24120;&#36935;&#21040;&#65292;&#29305;&#21035;&#26159;&#22312;&#23458;&#25143;&#31471;&#24212;&#29992;&#36816;&#34892;&#22312;&#19982;&#26381;&#21153;&#22120;&#19981;&#21516;&#30340;&#22495;&#21517;&#26102;&#12290;\n&#24403;&#20351;&#29992;Ajax&#20174;&#23458;&#25143;&#31471;&#24212;&#29992;&#21457;&#36215;&#35831;&#27714;&#21040;&#26381;&#21153;&#22120;&#26102;&#65292;&#22914;&#26524;&#30446;&#26631;&#26381;&#21153;&#22120;&#19981;&#26159;&#30001;&#26368;&#21021;&#21152;&#36733;&#39029;&#38754;&#30340;&#26381;&#21153;&#22120;&#25552;&#20379;&#30340;&#65292;&#21017;&#21487;&#33021;&#20250;&#36935;&#21040;&#36825;&#20010;&#38169;&#35823;&#12290;&#36825;&#26159;&#22240;&#20026;&#27983;&#35272;&#22120;&#36890;&#36807;CORS&#26426;&#21046;&#26469;&#38480;&#21046;&#19981;&#21516;&#22495;&#21517;&#20043;&#38388;&#30340;&#36164;&#28304;&#35775;&#38382;&#12290;<\/p><h2>&#35299;&#20915;&#26041;&#26696; 1&#65306;&#26356;&#26032; CORS &#37197;&#32622;<\/h2><p>&#35813;&#35299;&#20915;&#26041;&#26696;&#19987;&#27880;&#20110;&#26356;&#26032;Laravel&#20013;&#30340;&#40664;&#35748;CORS&#37197;&#32622;&#65292;&#20197;&#20801;&#35768;&#26469;&#33258;&#19981;&#21516;&#26469;&#28304;&#30340;&#35831;&#27714;&#12290;Laravel&#20351;&#29992;&#30340;&#26159;&#19968;&#20010;&#21517;&#20026;CORS&#21253;&#30340;&#25554;&#20214;&#12290;<code>fruitcake\/laravel-cors<\/code>&#37027;&#35774;&#35745;&#29992;&#26469;&#22788;&#29702;CORS&#30456;&#20851;&#38382;&#39064;&#30340;&#12290;<\/p><p>&#27493;&#39588;&#22914;&#19979;&#65306;<\/p><p>&#22914;&#26524;&#38656;&#35201;&#65292;&#28165;&#38500;&#37197;&#32622;&#32531;&#23384;&#65306;<code>php artisan config:clear<\/code><\/p><p>&#32534;&#36753;<code>config\/cors.php<\/code>&#25991;&#20214;&#24212;&#21305;&#37197;&#25152;&#38656;&#30340;&#36215;&#28304;&#12289;&#26041;&#27861;&#21644;&#22836;&#20449;&#24687;&#12290;<\/p><p>&#21457;&#24067;&#37197;&#32622;&#25991;&#20214;&#65306;<code>php artisan vendor:publish --tag=\"cors\"<\/code><\/p><p>&#22914;&#26524;&#26410;&#21253;&#21547;&#65292;&#21017;&#23433;&#35013;CORS&#21253;&#65306;<code>composer require fruitcake\/laravel-cors<\/code><\/p><p>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><pre><code>\/\/ Example configuration in config\/cors.php\nreturn [\n    'paths' =&gt; ['api\/*'],\n    'allowed_methods' =&gt; ['*'],\n    'allowed_origins' =&gt; ['http:\/\/example.com'],\n    'allowed_origins_patterns' =&gt; [],\n    'allowed_headers' =&gt; ['Content-Type', 'X-Requested-With'],\n    'exposed_headers' =&gt; [],\n    'max_age' =&gt; 0,\n    'supports_credentials' =&gt; false,\n];\n<\/code><\/pre><p>&#36825;&#31181;&#26041;&#27861;&#28789;&#27963;&#19988;&#21487;&#20197;&#26681;&#25454;&#29305;&#23450;&#38656;&#27714;&#36827;&#34892;&#23450;&#21046;&#65292;&#20294;&#20540;&#24471;&#27880;&#24847;&#30340;&#26159;&#65292;&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#19981;&#24212;&#20801;&#35768;&#25152;&#26377;&#26469;&#28304;&#36827;&#20837;&#65292;&#22240;&#20026;&#36825;&#21487;&#33021;&#20250;&#26292;&#38706;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#21040;&#23433;&#20840;&#39118;&#38505;&#12290;<\/p><h2>&#35299;&#20915;&#26041;&#26696; 2&#65306;&#22312;&#20013;&#38388;&#20214;&#20013;&#22788;&#29702;&#36328;&#22495;&#36164;&#28304;&#20849;&#20139;&#65288;CORS&#65289;<\/h2><p>&#22312;Laravel&#20013;&#21019;&#24314;&#33258;&#23450;&#20041;&#20013;&#38388;&#20214;&#21487;&#20197;&#23545;&#27599;&#20010;&#36335;&#30001;&#30340;CORS&#31574;&#30053;&#36827;&#34892;&#25511;&#21046;&#12290;<\/p><p>&#27493;&#39588;&#22914;&#19979;&#65306;<\/p><p>&#24212;&#29992;&#20013;&#38388;&#20214;&#21040;&#38656;&#35201;&#22788;&#29702;CORS&#30340;&#36335;&#30001;&#12290;<\/p><p>&#27880;&#20876;&#20013;&#38388;&#20214;&#12290;<code>app\/Http\/Kernel.php<\/code>&#22909;&#30340;&#65292;&#35831;&#21457;&#36865;&#20320;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><p>&#22312;handle&#26041;&#27861;&#20013;&#23454;&#29616;CORS&#22836;&#37096;&#12290;<\/p><p>&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#20013;&#38388;&#20214;&#65306;<code>php artisan make:middleware CorsMiddleware<\/code><\/p><p>&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><pre><code>\/\/ In app\/Http\/Middleware\/CorsMiddleware.php\nclass CorsMiddleware {\n    public function handle($request, Closure $next) {\n        return $next($request)\n          -&gt;header('Access-Control-Allow-Origin', 'http:\/\/example.com')\n          -&gt;header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');\n    }\n}\n\n\/\/ In app\/Http\/Kernel.php\nprotected $routeMiddleware = [\n    \/\/ ...\n    'cors' =&gt; AppHttpMiddlewareCorsMiddleware::class,\n];\n\n\/\/ In routes\/api.php or web.php\nRoute::middleware(['cors'])-&gt;group(function () {\n    Route::get('\/example', 'ExampleController@index');\n});\n<\/code><\/pre><p>&#36825;&#31181;&#26041;&#27861;&#25552;&#20379;&#20102;&#31934;&#32454;&#30340;&#25511;&#21046;&#65292;&#20294;&#38656;&#35201;&#26356;&#22810;&#30340;&#20195;&#30721;&#35774;&#32622;&#21644;&#32500;&#25252;&#24037;&#20316;&#12290;&#27492;&#22806;&#65292;&#25163;&#21160;&#35774;&#32622;&#36825;&#20123;&#22836;&#20063;&#38656;&#35201;&#29702;&#35299;&#20854;&#23433;&#20840;&#26041;&#38754;&#30340;&#32771;&#34385;&#12290;<\/p><h2>&#35299;&#20915;&#26041;&#26696;3&#65306;&#21069;&#31471;&#35299;&#20915;&#36328;&#22495;&#36164;&#28304;&#20849;&#20139;&#65288;CORS&#65289;&#38382;&#39064;<\/h2><p>&#26377;&#26102;&#20505;&#65292;&#38382;&#39064;&#21487;&#20197;&#22312;&#21069;&#31471;&#26242;&#26102;&#32469;&#36807;&#65292;&#23588;&#20854;&#26159;&#22312;&#24320;&#21457;&#36807;&#31243;&#20013;&#12290;<\/p><p>&#27493;&#39588;&#22914;&#19979;&#65306;<\/p><p>&#37197;&#32622;&#20195;&#29702;&#20197;&#37325;&#23450;&#21521;&#35831;&#27714;&#21040;Laravel&#24212;&#29992;&#31243;&#24207;&#12290;<\/p><p>&#23545;&#20110;&#26412;&#22320;&#24320;&#21457;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;&#30001;&#24320;&#21457;&#26381;&#21153;&#22120;&#25552;&#20379;&#30340;&#20195;&#29702;&#65292;&#20363;&#22914;&#29992;&#20110;&#21019;&#24314; React &#24212;&#29992;&#25110; Vue CLI &#30340;&#26381;&#21153;&#22120;&#12290;<\/p><p>&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><pre><code>\/\/ In package.json (if using create-react-app)\n\"proxy\": \"http:\/\/localhost:8000\",\n<\/code><\/pre><p>&#36825;&#19981;&#24212;&#35813;&#34987;&#29992;&#20316;&#27704;&#20037;&#35299;&#20915;&#26041;&#26696;&#65292;&#22240;&#20026;&#23427;&#20165;&#22312;&#24320;&#21457;&#29615;&#22659;&#20013;&#26377;&#25928;&#65292;&#19988;&#26080;&#27861;&#35299;&#20915;&#26381;&#21153;&#22120;&#19978;&#30340;CORS&#25919;&#31574;&#38382;&#39064;&#12290;&#23427;&#21482;&#26159;&#25513;&#30422;&#20102;&#38382;&#39064;&#65292;&#32780;&#19981;&#26159;&#30495;&#27491;&#35299;&#20915;&#38382;&#39064;&#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>&#24403;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#36935;&#21040;CORS&#65288;&#36328;&#28304;&#36164;&#28304;&#20849;&#20139;&#65289;&#38382;&#39064;&#26102;&#65292;&#21487;&#33021;&#20250;&#20986;&#29616;&#35775;&#38382;&#21463;&#38480;&#30340;&#24773;&#20917;&#12290;&#36825;&#36890;&#24120;&#26159;&#22240;&#20026;&#27983;&#35272;&#22120;&#30340;&#32531;&#23384;&#23548;&#33268;&#30340;&#38382;&#39064;&#65292;&#25110;&#32773;&#22240;&#20026;&#26381;&#21153;&#22120;&#37197;&#32622;&#19981;&#24403;&#12290;&#20197;&#19979;&#26159;&#19968;&#20123;&#24120;&#35265;&#30340;&#35299;&#20915;&#26041;&#26696;&#65306;<\/p>\n<h3>1. &#26816;&#26597;&#27983;&#35272;&#22120;&#32531;&#23384;<\/h3>\n<p><strong>&#35299;&#20915;&#26041;&#26696;<\/strong>&#65306;<\/p>\n<ul>\n<li><strong>&#26816;&#26597;&#27983;&#35272;&#22120;&#32531;&#23384;<\/strong>&#65306;&#30830;&#20445;&#24744;&#27491;&#22312;&#35775;&#38382;&#30340;&#39029;&#38754;&#26159;&#26368;&#26032;&#21644;&#26410;&#32531;&#23384;&#30340;&#12290;<\/li>\n<li><strong>&#21047;&#26032;&#39029;&#38754;<\/strong>&#65306;&#23581;&#35797;&#21047;&#26032;&#24403;&#21069;&#39029;&#38754;&#26469;&#28165;&#38500;&#32531;&#23384;&#12290;<\/li>\n<\/ul>\n<p>&#31034;&#20363;&#20195;&#30721;&#65306;<\/p>\n<pre><code class=\"language-php\">if (!headers_sent()) {\n    header('Cache-Control: no-cache, no-store, must-revalidate');\n    header('Pragma: no-cache');\n    header('Expires: 0');\n}<\/code><\/pre>\n<h3>2. &#35843;&#25972;CORS&#35774;&#32622;<\/h3>\n<p><strong>&#35299;&#20915;&#26041;&#26696;<\/strong>&#65306;<\/p>\n<ul>\n<li><strong>&#26356;&#25913;CORS&#37197;&#32622;<\/strong>&#65306;&#22312;&#24744;&#30340;&#26381;&#21153;&#22120;&#31471;&#20462;&#25913;CORS&#37197;&#32622;&#65292;&#20351;&#20854;&#20801;&#35768;&#20174;&#29305;&#23450;&#26469;&#28304;&#35831;&#27714;&#36164;&#28304;&#12290;<\/li>\n<li><strong>&#20351;&#29992;&#31532;&#19977;&#26041;&#26381;&#21153;<\/strong>&#65306;&#22914;&#26524;&#21487;&#33021;&#30340;&#35805;&#65292;&#32771;&#34385;&#20351;&#29992;CDN&#65288;&#20869;&#23481;&#20998;&#21457;&#32593;&#32476;&#65289;&#65292;&#23427;&#21487;&#20197;&#24110;&#21161;&#21152;&#36895;&#25968;&#25454;&#20256;&#36755;&#24182;&#20943;&#23569;&#24310;&#36831;&#12290;<\/li>\n<\/ul>\n<p>&#31034;&#20363;&#20195;&#30721;&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ &#22312;&#24744;&#30340;&#26381;&#21153;&#22120;&#25991;&#20214;&#20013;&#28155;&#21152;CORS&#37197;&#32622;\n$allowedOrigins = ['http:\/\/example.com', 'https:\/\/example.org'];\n$responseHeaders = [\n    'Access-Control-Allow-Origin' =&gt; implode(', ', $allowedOrigins),\n];\nheader('Access-Control-Allow-Origin:' . implode(', ', $allowedOrigins));\nheader('Content-Type: application\/json; charset=utf-8');\necho json_encode(['message' =&gt; 'Success!']);<\/code><\/pre>\n<p>&#27880;&#24847;&#65306;&#35831;&#23558;&#19978;&#36848;&#20195;&#30721;&#20013;&#30340;<code>['http:\/\/example.com', 'https:\/\/example.org']<\/code>&#26367;&#25442;&#20026;&#23454;&#38469;&#30340;&#20801;&#35768;&#26469;&#28304;&#21015;&#34920;&#12290;<\/p>\n<h3>3. &#20351;&#29992;&#20195;&#29702;&#26381;&#21153;&#22120;<\/h3>\n<p><strong>&#35299;&#20915;&#26041;&#26696;<\/strong>&#65306;<\/p>\n<ul>\n<li><strong>&#20351;&#29992;&#20195;&#29702;&#26381;&#21153;&#22120;<\/strong>&#65306;&#36890;&#36807;&#21019;&#24314;&#19968;&#20010;&#20195;&#29702;&#26381;&#21153;&#22120;&#65292;&#24744;&#21487;&#20197;&#32469;&#36807;CORS&#38480;&#21046;&#65292;&#24182;&#20351;&#26469;&#33258;&#19981;&#21516;&#28304;&#30340;&#35831;&#27714;&#33021;&#22815;&#23433;&#20840;&#22320;&#36890;&#20449;&#12290;<\/li>\n<\/ul>\n<p>&#31034;&#20363;&#20195;&#30721;&#65306;<\/p>\n<pre><code class=\"language-javascript\">const express = require('express');\nconst http = require('http');\n\nconst app = express();\n\napp.get('\/api\/data', (req, res) =&gt; {\n  \/\/ &#35831;&#27714;&#22788;&#29702;&#36923;&#36753;\n});\n\nconst server = http.createServer(app);\nserver.listen(3000, () =&gt; console.log('Server is running on port 3000'));<\/code><\/pre>\n<p>&#36825;&#20123;&#26041;&#27861;&#21487;&#20197;&#35299;&#20915;&#22823;&#22810;&#25968;CORS&#38382;&#39064;&#65292;&#20294;&#26377;&#26102;&#21487;&#33021;&#38656;&#35201;&#26681;&#25454;&#20855;&#20307;&#24773;&#20917;&#36827;&#34892;&#35843;&#25972;&#12290;&#24076;&#26395;&#36825;&#20123;&#20449;&#24687;&#23545;&#24744;&#26377;&#25152;&#24110;&#21161;&#65281;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#22312;&#20351;&#29992; Laravel &#26102;&#65292;&#22914;&#26524;&#20320;&#36935;&#21040;&ldquo;&#35775;&#38382;&#34987; CROS &#038;#3157..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-904","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\/904","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=904"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=904"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=904"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}