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

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

Oct 22, 2019 pm 01:26 PM
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. 次に、カーネル ファイルにミドルウェアを登録します。

    protected $middleware = [
        // more
        App\Http\Middleware\EnableCrossRequestMiddleware::class,
    ];
ログイン後にコピー

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

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

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

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

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

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP vs. Flutter: モバイル開発に最適な選択 PHP vs. Flutter: モバイル開発に最適な選択 May 06, 2024 pm 10:45 PM

PHP vs. Flutter: モバイル開発に最適な選択

Laravel - アーティザンコマンド Laravel - アーティザンコマンド Aug 27, 2024 am 10:51 AM

Laravel - アーティザンコマンド

PHP でオブジェクト リレーショナル マッピング (ORM) を使用してデータベース操作を簡素化するにはどうすればよいですか? PHP でオブジェクト リレーショナル マッピング (ORM) を使用してデータベース操作を簡素化するにはどうすればよいですか? May 07, 2024 am 08:39 AM

PHP でオブジェクト リレーショナル マッピング (ORM) を使用してデータベース操作を簡素化するにはどうすればよいですか?

PHP単体テストツールの長所と短所の分析 PHP単体テストツールの長所と短所の分析 May 06, 2024 pm 10:51 PM

PHP単体テストツールの長所と短所の分析

PHP 分散システムのアーキテクチャと実践 PHP 分散システムのアーキテクチャと実践 May 04, 2024 am 10:33 AM

PHP 分散システムのアーキテクチャと実践

Laravel と CodeIgniter の最新バージョンの比較 Laravel と CodeIgniter の最新バージョンの比較 Jun 05, 2024 pm 05:29 PM

Laravel と CodeIgniter の最新バージョンの比較

Laravel と CodeIgniter のデータ処理機能はどのように比較されますか? Laravel と CodeIgniter のデータ処理機能はどのように比較されますか? Jun 01, 2024 pm 01:34 PM

Laravel と CodeIgniter のデータ処理機能はどのように比較されますか?

PHPコードの単体テストと統合テスト PHPコードの単体テストと統合テスト May 07, 2024 am 08:00 AM

PHPコードの単体テストと統合テスト

See all articles