ホームページ  >  記事  >  PHPフレームワーク  >  laravelクロスドメインソリューション

laravelクロスドメインソリューション

藏色散人
藏色散人転載
2019-10-22 13:26:393431ブラウズ

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. 次に、カーネル ファイルにミドルウェアを登録します。

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

App\Http\Kernel クラスの $middleware 属性を追加します。ここで登録されたミドルウェアは、次のものに属します。グローバルミドルウェア部分。

そうすると、フロントエンド ページがすでにクロスドメイン リクエストを送信できることがわかります。

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

Laravel 関連の技術記事の詳細については、Laravel Framework Getting Started Tutorial 列にアクセスして学習してください。

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

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。