Laravel開発におけるクロスドメインソリューションの詳細な説明

黄舟
リリース: 2023-03-16 20:56:01
オリジナル
2334 人が閲覧しました

まえがき

ご存知のとおり、開発にlaravelを使用する場合、特にフロントエンドとバックエンドが完全に分離されている場合、フロントエンドプロジェクトは私たち自身のマシンの指定されたポートで実行されるため(他の人のマシンである可能性もあります) (例: localhost: 8000)、laravel プログラムは別のポートで実行されるため、クロスドメインになります。ただし、ブラウザーの同一オリジンポリシーにより、クロスドメインリクエストは違法です。実際、この問題はミドルウェアを追加するだけで簡単に解決できます。以下では特に言うことはありません。エディターに従って詳細な解決策を見てみましょう。

解決策:

1. 新しいミドルウェアを作成します

php artisan make:middleware EnableCrossRequestMiddleware
ログイン後にコピー

2. ミドルウェアのコンテンツを書き込みます

<?php
namespace App\Http\Middleware;
use Closure;
class EnableCrossRequestMiddleware
{
 /**
 * Handle an incoming request.
 *
 * @param \Illuminate\Http\Request $request
 * @param \Closure $next
 * @return mixed
 */
 public function handle($request, Closure $next)
 {
 $response = $next($request);
 $origin = $request->server(&#39;HTTP_ORIGIN&#39;) ? $request->server(&#39;HTTP_ORIGIN&#39;) : &#39;&#39;;
 $allow_origin = [
  &#39;http://localhost:8000&#39;,
 ];
 if (in_array($origin, $allow_origin)) {
  $response->header(&#39;Access-Control-Allow-Origin&#39;, $origin);
  $response->header(&#39;Access-Control-Allow-Headers&#39;, &#39;Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN&#39;);
  $response->header(&#39;Access-Control-Expose-Headers&#39;, &#39;Authorization, authenticated&#39;);
  $response->header(&#39;Access-Control-Allow-Methods&#39;, &#39;GET, POST, PATCH, PUT, OPTIONS&#39;);
  $response->header(&#39;Access-Control-Allow-Credentials&#39;, &#39;true&#39;);
 }
 return $response;
 }
}
ログイン後にコピー

$allow_origin array 変数は、許可するクロスドメインのリストであり、変更できます。自分で。

3. 次にカーネルファイルにミドルウェアを登録します

 protected $middleware = [
 // more
 App\Http\Middleware\EnableCrossRequestMiddleware::class,
 ];
ログイン後にコピー

ここで登録したミドルウェアはグローバルミドルウェアに属します。
その後、フロントエンド ページがすでにクロスドメイン リクエストを送信できることがわかります。

メソッドがオプションに設定されたリクエストがもう 1 つ存在するのは正常です。これは、ブラウザーが最初にサーバーがクロスドメイン リクエストを許可するかどうかを判断する必要があるためです。

概要

以上がLaravel開発におけるクロスドメインソリューションの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート