ホームページ  >  記事  >  バックエンド開発  >  Laravel開発におけるクロスドメインソリューションの詳細な説明

Laravel開発におけるクロスドメインソリューションの詳細な説明

黄舟
黄舟オリジナル
2017-11-01 09:19:552327ブラウズ

まえがき

ご存知のとおり、開発に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 array 変数は、許可するクロスドメインのリストであり、変更できます。自分で。

3. 次にカーネルファイルにミドルウェアを登録します

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

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

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

概要

以上がLaravel開発におけるクロスドメインソリューションの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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