ホームページ >PHPフレームワーク >Laravel >Laravelでクロスドメインを適切に設定する方法

Laravelでクロスドメインを適切に設定する方法

PHPz
PHPzオリジナル
2023-04-13 10:07:152515ブラウズ

Laravel は、ルーティング、ミドルウェア、ORM などを含む多くの強力な機能を提供する人気のある PHP Web アプリケーション フレームワークです。ただし、Laravel を使用して Web アプリケーションを構築すると、クロスドメインの問題が発生することがよくあります。クロスドメインは通常、異なるドメイン名からのリソースへのアクセスを制限するブラウザーの同一生成元ポリシーによって発生します。したがって、異なるドメインにリクエストを行う場合は、クロスドメインの設定が必要になります。

以下では、Laravel でクロスドメインを正しく設定する方法を紹介します。

1.「Barryvdh-cors」ミドルウェアをインストールする

Laravel に関連するサードパーティ ソフトウェア パッケージ「Barryvdh-cors」は、開発者がクロスドメインの問題を解決するのに役立ちます。 「Barry vd. Heuvel」というオランダ人によって開発されたこのミドルウェアを使用すると、Laravel がサーバー側で CORS (Cross-Origin Resource Sharing) 構成を実行できるようになります。

このミドルウェアを使用するには、まずインストールする必要があります。次のコマンドを実行します:

composer require barryvdh/laravel-cors

ミドルウェアをインストールした後、それをアプリケーションに登録する必要があります。 config/app.php ファイルを開き、プロバイダー配列に次のコードを追加します。

'providers' => [
    // ...
    Barryvdh\Cors\ServiceProvider::class,
];

次に、エイリアス配列に次のコードを追加します。

'aliases' => [
    // ...
    'Cors' => Barryvdh\Cors\Facade::class,
];

2. ミドルウェアを構成します

ミドルウェアを登録した後、アプリケーションで設定する必要があります。 config/cors.php ファイルを開くと、自動的に生成されますが、そうでない場合は手動でファイルを作成してください。

このファイルでは、クロスドメイン アクセスを許可するドメイン名と、AJAX を介した共有を許可する HTTP リクエスト メソッドを構成できます。設定例を次に示します:

return [
    'supports_credentials' => false,
    'allowed_origins' => ['*'],
    'allowed_headers' => ['Content-Type', 'Authorization'],
    'allowed_methods' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
    'exposed_headers' => [],
    'max_age' => 0,
];

この例では、すべてのオリジンからのクロスドメイン アクセスを許可しますが、特定のリクエスト メソッドとリクエスト ヘッダーのみを許可します。さらにオプションをカスタマイズする必要がある場合は、[このドキュメント](https://github.com/barryvdh/laravel-cors) を確認してください。

3. ルートまたはコントローラーでのミドルウェアの使用

「Barryvdh-cors」ミドルウェアをインストールして構成すると、ルートまたはコントローラーで使用できます。

ルーティングで使用:

Route::get('/data', function () {
    return ['message' => 'Hello World'];
})->middleware('cors'); // Use cors middleware

コントローラーで使用:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Barryvdh\Cors\HandleCors;

class ExampleController extends Controller
{
    /**
     * Use Cors middleware to handle the request
    */
    public function index(Request $request)
    {
        $middleware = new HandleCors();
        $response = $middleware->handle($request, function($request) {
            return ['message' => 'Hello World'];
        });
        return $response;
    }
}

4. 結論

「Barryvdh-cors」ミドルウェアを通じて、クロスドメインを実現します。 Laravel アプリケーションの問題は簡単に解決できます。このミドルウェアは、ルーティングやコントローラーだけでなく、グローバル設定やグループ設定などもサポートしており、クロスドメインポリシーをより自由かつ正確に制御することができます。

以上がLaravelでクロスドメインを適切に設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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