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.
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.
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!