まえがき
ご存知のとおり、開発に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('HTTP_ORIGIN') ? $request->server('HTTP_ORIGIN') : ''; $allow_origin = [ 'http://localhost:8000', ]; if (in_array($origin, $allow_origin)) { $response->header('Access-Control-Allow-Origin', $origin); $response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN'); $response->header('Access-Control-Expose-Headers', 'Authorization, authenticated'); $response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS'); $response->header('Access-Control-Allow-Credentials', 'true'); } return $response; } }
$allow_origin array 変数は、許可するクロスドメインのリストであり、変更できます。自分で。
3. 次にカーネルファイルにミドルウェアを登録します
protected $middleware = [ // more App\Http\Middleware\EnableCrossRequestMiddleware::class, ];
ここで登録したミドルウェアはグローバルミドルウェアに属します。
その後、フロントエンド ページがすでにクロスドメイン リクエストを送信できることがわかります。
メソッドがオプションに設定されたリクエストがもう 1 つ存在するのは正常です。これは、ブラウザーが最初にサーバーがクロスドメイン リクエストを許可するかどうかを判断する必要があるためです。
概要
以上がLaravel開発におけるクロスドメインソリューションの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。