ホームページ > 記事 > PHPフレームワーク > laravelはクロスドメインアクセスを実装します
最新の Web アプリケーションでは、クロスオリジン リソース共有 (CORS) が不可欠な機能になっています。 Laravel フレームワークを使用して Web アプリケーションを開発する場合、クロスドメイン アクセスを実現する必要がある状況によく遭遇します。この記事では、より柔軟で効率的な Web アプリケーションを開発できるように、Laravel フレームワークを使用してクロスドメインのリソース共有を実現する方法を紹介します。
クロスドメインリソース共有とは何ですか?
Web 開発において、クロスオリジン リソース共有 (CORS) とは、1 つの Web サイトのページで別の Web サイトのリソースを使用することを指します。たとえば、ある Web サイト (Web サイト A) が別の Web サイト (Web サイト B) の API インターフェイスを使用してデータなどを取得します。ブラウザの同一オリジン ポリシーにより、別の Web サイトからのリソースを直接使用することは許可されません。この場合、クロスドメイン リソース共有を使用して、異なるドメイン間でデータがやり取りできるようにする必要があります。
Laravel はクロスドメイン アクセスをどのように実装しますか?
Laravel フレームワークは、クロスドメイン アクセスを簡単に実現できる実用的なミドルウェアを多数提供します。以下に 2 つの実装方法を紹介します。
最初の実装方法: Laravel の CORS ミドルウェアを使用する
まず、サードパーティの CORS ミドルウェア パッケージを導入する必要があります。laravel-cors パッケージを使用できます。具体的な手順は次のとおりです。
composer require barryvdh/laravel-cors
ミドルウェアを appHttpKernel.php ファイルに登録します:
protected $middleware = [ // Other middlewares BarryvdhCorsHandleCors::class, ];
次に、以下に示すように、config/cors.php ファイルでクロスドメイン パラメータを構成します。
<?php return [ 'paths' => [ 'api/*', '/*' ], 'allowed_methods' => [ 'GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', ], 'allowed_origins' => [ '*', ], 'allowed_origins_patterns' => [], 'allowed_headers' => [ 'Content-Type', 'X-Requested-With', 'Authorization', 'Accept', 'Origin', ], 'exposed_headers' => [], 'max_age' => 0, 'supports_credentials' => true, ];
上記のコードpaths 属性はクロスドメインをサポートする必要がある API パスを定義します allowed_methods 属性はクロスドメインを許可する HTTP メソッドを定義します allowed_origins 属性はクロスドメインを許可するソースを定義します (* はすべてのソースを示します)。属性は、クロスドメイン送信を許可するリクエスト ヘッダーを定義します。
2 番目の実装方法: Laravel のミドルウェアを使用する
カスタム Laravel ミドルウェアを介してクロスドメイン アクセスを実装することも良い選択です。このように、クロスドメイン アクセス リクエストを処理するには、Laravel ミドルウェアを自分で作成する必要があります。以下は基本的な実装例です。
まず、app/Http/Middleware ディレクトリに CorsMiddleware.php ファイルを作成する必要があります。 , ファイルの内容は以下の通りです:
<?php namespace AppHttpMiddleware; use Closure; class CorsMiddleware { public function handle($request, Closure $next) { $response = $next($request); $response->header('Access-Control-Allow-Origin', '*') ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS') ->header('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Authorization'); return $response; } }
上記コードのhandleメソッドはリクエストが来るたびに実行することができ、レスポンスヘッダーを設定することでクロスドメインアクセスを許可します。
次に、簡単に使用できるように、CorsMiddleware を Laravel フレームワークに登録する必要があります。次のコードを app/Http/Kernel.php ファイルに追加します:
protected $routeMiddleware = [ // Other middleware 'cors' => AppHttpMiddlewareCorsMiddleware::class, ];
上記のコードの CorsMiddleware::class は、カスタム CorsMiddleware ミドルウェアです。ここで登録すると、プログラムで使用できるようになります。
クロスドメインをサポートする必要があるコントローラーまたはルートでは、登録された CorsMiddleware を使用します。例:
Route::group(['middleware' => ['cors']], function () { // 这里可以添加跨域API });
ここでは、2 つの方法で Laravel フレームワークの下でクロスドメイン アクセスを実装することに成功しました。実際の開発では、特定のニーズに応じて適切な方法を選択してクロスドメイン アクセスを実現し、Web アプリケーションをより柔軟かつ効率的にすることができます。
以上がlaravelはクロスドメインアクセスを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。