最近、開発中にクロスドメインのニーズに遭遇し、関連情報を検索して関連するソリューションを見つけたので、次の記事では主に Laravel 開発におけるクロスドメインのソリューションを紹介します。とても詳しく書かれていますので、必要な方は参考にしてみてください。
まえがき
誰もが知っているように、開発に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 配列変数は、許可するクロスドメインのリストであり、次のように変更できます。あなた自身。
3. 次に、App\Http\Kernel クラスのカーネル ファイル
protected $middleware = [ // more App\Http\Middleware\EnableCrossRequestMiddleware::class, ];
$ にミドルウェアを登録します。ここで登録されるミドルウェアはグローバルミドルウェアに属します。
そうすると、フロントエンド ページがすでにクロスドメイン リクエストを送信できることがわかります。
メソッドがオプションに設定されたリクエストがもう 1 つ存在するのは通常のことです。これは、ブラウザが最初にサーバーがクロスドメイン リクエストを許可するかどうかを判断する必要があるためです。
上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
Laravel がフロントエンド ajax からデータ分析を受け取ることについて
Laravel フレームワークにスーパーバイザーを実装する方法PHP での非同期処理の実行
以上がLaravel開発におけるクロスドメインの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。