ホームページ  >  記事  >  バックエンド開発  >  Laravel開発におけるクロスドメインの問題を解決する方法

Laravel開発におけるクロスドメインの問題を解決する方法

不言
不言オリジナル
2018-06-13 14:08:491625ブラウズ

最近、開発中にクロスドメインのニーズに遭遇し、関連情報を検索して関連するソリューションを見つけたので、次の記事では主に 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(&#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 配列変数は、許可するクロスドメインのリストであり、次のように変更できます。あなた自身。

3. 次に、App\Http\Kernel クラスのカーネル ファイル

 protected $middleware = [
 // more
 App\Http\Middleware\EnableCrossRequestMiddleware::class,
 ];

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

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

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

Laravel がフロントエンド ajax からデータ分析を受け取ることについて

Laravel フレームワークにスーパーバイザーを実装する方法PHP での非同期処理の実行

以上がLaravel開発におけるクロスドメインの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。