ホームページ > 記事 > PHPフレームワーク > クロスドメインlaravelの設定方法(2つの方法)
フロントエンドとバックエンドが別々のプロジェクトでは、フロントエンドがバックエンド インターフェイスを要求すると、クロスドメインの問題が発生する可能性があります。その中で、典型的なシナリオは、フロントエンド プロジェクトが http://localhost:8080 で実行され、バックエンド プロジェクトが http://localhost:8000 で実行されるというものです。この場合、クロスドメイン設定を行う必要があります。セット。
Laravel では、次の 2 つの方法でクロスドメインを設定できます。
最初にミドルウェアを作成します CorsMiddleware:
php artisan make:middleware CorsMiddleware
CorsMiddleware でのクロスドメインの処理:
<?php namespace App\Http\Middleware; use Closure; class CorsMiddleware { public function handle($request, Closure $next) { $origin = $request->header('Origin') ?: '*'; header('Access-Control-Allow-Origin: ' . $origin); header('Access-Control-Allow-Headers: Origin, Content-Type, Authorization'); header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS'); return $next($request); } }
The ミドルウェアは、Http/Kernel.php の $middleware 配列に登録されます:
protected $middleware = [ // ... \App\Http\Middleware\CorsMiddleware::class, ];
このとき、Laravel は、応答ヘッダーに Access-Control-Allow-Origin などのクロスドメイン関連の情報を追加します。
実際、Laravel コミュニティには、クロスドメインの問題の処理に使用できるオープンソース拡張パッケージがすでに多数あります。たとえば、laravel-cors は、クロスドメインリクエストを設定するためのいくつかの構成項目を提供します。
最初に、拡張機能パッケージをインストールします:
composer require barryvdh/laravel-cors
次に、config/app.php のプロバイダー配列にサービス プロバイダーを登録します:
'providers' => [ // ... Barryvdh\Cors\ServiceProvider::class, ],
最後に、構成ファイルを公開します:
php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"
現時点では、config/cors.php でクロスドメイン リクエストを構成できます:
return [ /* |-------------------------------------------------------------------------- | Laravel CORS Options |-------------------------------------------------------------------------- | | The allowed_methods and allowed_headers options are case-insensitive. | */ 'allowed_origins' => ['*'], 'allowed_origins_patterns' => [], 'allowed_headers' => ['*'], 'allowed_methods' => ['*'], 'exposed_headers' => [], 'max_age' => 0, 'supports_credentials' => false, ];
必要に応じて構成します。
Laravel でクロスドメイン設定を行う方法は上記 2 つありますので、自分に合った方を選んでください。
以上がクロスドメインlaravelの設定方法(2つの方法)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。