Rumah  >  Artikel  >  rangka kerja php  >  Cara menyediakan laravel merentas domain (dua kaedah)

Cara menyediakan laravel merentas domain (dua kaedah)

PHPz
PHPzasal
2023-04-08 15:30:023346semak imbas

Dalam projek dengan bahagian hadapan dan bahagian belakang yang berasingan, masalah merentas domain mungkin dihadapi apabila bahagian hadapan meminta antara muka bahagian belakang. Antaranya, senario biasa ialah: projek bahagian hadapan dijalankan di http://localhost:8080, dan projek bahagian belakang dijalankan di http://localhost:8000 Dalam kes ini, tetapan merentas domain perlu ditetapkan.

Dalam Laravel, anda boleh menggunakan dua kaedah berikut untuk menyediakan merentas domain.

  1. Kaedah middleware

Mula-mula buat middleware CorsMiddleware:

php artisan make:middleware CorsMiddleware

Kendalikan silang domain dalam CorsMiddleware:

<?php

namespace App\Http\Middleware;

use Closure;

class CorsMiddleware
{
    public function handle($request, Closure $next)
    {
        $origin = $request->header('Origin') ?: '*';

        header('Access-Control-Allow-Origin: ' . $origin);
        header('Access-Control-Allow-Headers: Origin, Content-Type, Authorization');
        header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');

        return $next($request);
    }
}

Perisian tengah akan didaftarkan dalam tatasusunan $middleware dalam Http/Kernel.php:

protected $middleware = [
    // ...
    \App\Http\Middleware\CorsMiddleware::class,
];

Pada masa ini, Laravel akan menambah Access-Control-Allow-Origin dan isu berkaitan merentas domain lain dalam maklumat tajuk respons.

  1. Pakej sambungan Laravel-cors

Malah, komuniti Laravel sudah mempunyai banyak pakej sambungan sumber terbuka yang boleh digunakan untuk mengendalikan isu merentas domain. Contohnya, laravel-cors menyediakan beberapa item konfigurasi untuk menyediakan permintaan merentas domain.

Mula-mula, pasang pakej sambungan:

composer require barryvdh/laravel-cors

Kemudian, daftarkan penyedia perkhidmatan dalam tatasusunan penyedia dalam config/app.php:

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

Akhir sekali, Terbitkan fail konfigurasi:

php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"

Pada masa ini, anda boleh mengkonfigurasi permintaan merentas domain dalam config/cors.php:

return [

    /*
    |--------------------------------------------------------------------------
    | Laravel CORS Options
    |--------------------------------------------------------------------------
    |
    | The allowed_methods and allowed_headers options are case-insensitive.
    |
    */

    'allowed_origins' => ['*'],

    'allowed_origins_patterns' => [],

    'allowed_headers' => ['*'],

    'allowed_methods' => ['*'],

    'exposed_headers' => [],

    'max_age' => 0,

    'supports_credentials' => false,

];

Konfigurasikan sewajarnya seperti yang diperlukan.

Di atas ialah dua kaedah untuk menyediakan tetapan merentas domain dalam Laravel. Pilih sahaja yang sesuai dengan anda.

Atas ialah kandungan terperinci Cara menyediakan laravel merentas domain (dua kaedah). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn