Laravel ialah rangka kerja aplikasi web PHP popular yang menawarkan banyak ciri berkuasa termasuk penghalaan, perisian tengah, ORM dan banyak lagi. Walau bagaimanapun, apabila kami membina aplikasi web dengan Laravel, adalah perkara biasa untuk menghadapi isu merentas domain. Cross-domain biasanya disebabkan oleh dasar asal yang sama penyemak imbas, yang mengehadkan akses kepada sumber daripada nama domain yang berbeza. Oleh itu, apabila kami membuat permintaan kepada domain yang berbeza, kami perlu menyediakan merentas domain.
Di bawah ini kami akan memperkenalkan cara menyediakan merentas domain dalam Laravel dengan betul.
Pakej perisian pihak ketiga "Barryvdh-cors" yang berkaitan dengan Laravel boleh membantu pembangun menyelesaikan masalah merentas domain. Dibangunkan oleh orang Belanda bernama "Barry vd. Heuvel", perisian tengah ini membenarkan Laravel melakukan konfigurasi CORS (Perkongsian Sumber Silang Asal) pada bahagian pelayan.
Untuk menggunakan perisian tengah ini, kita perlu memasangnya terlebih dahulu. Jalankan arahan berikut:
composer require barryvdh/laravel-cors
Selepas memasang perisian tengah, kami perlu mendaftarkannya dengan aplikasi. Buka fail config/app.php dan tambahkan kod berikut dalam tatasusunan penyedia:
'providers' => [ // ... Barryvdh\Cors\ServiceProvider::class, ];
Kemudian tambahkan kod berikut dalam tatasusunan alias:
'aliases' => [ // ... 'Cors' => Barryvdh\Cors\Facade::class, ];
Selepas mendaftarkan middleware, kami perlu mengkonfigurasinya dalam aplikasi. Buka fail config/cors.php, ia boleh dijana secara automatik, jika tidak sila buat fail secara manual.
Dalam fail, anda boleh mengkonfigurasi nama domain yang membenarkan akses merentas domain dan kaedah permintaan HTTP yang membenarkan perkongsian melalui AJAX, dsb. Berikut ialah konfigurasi contoh:
return [ 'supports_credentials' => false, 'allowed_origins' => ['*'], 'allowed_headers' => ['Content-Type', 'Authorization'], 'allowed_methods' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], 'exposed_headers' => [], 'max_age' => 0, ];
Dalam contoh ini, kami akan membenarkan akses merentas domain daripada semua asal, tetapi hanya kaedah permintaan khusus dan pengepala permintaan. Jika anda perlu menyesuaikan lebih banyak pilihan, sila lihat [dokumen ini](https://github.com/barryvdh/laravel-cors).
Apabila kami telah memasang dan mengkonfigurasi perisian tengah "Barryvdh-cors", kami boleh menggunakannya dalam laluan atau pengawal.
Digunakan dalam penghalaan:
Route::get('/data', function () { return ['message' => 'Hello World']; })->middleware('cors'); // Use cors middleware
Digunakan dalam pengawal:
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; } }
Oleh "Barryvdh-cors" Dengan perisian tengah, kita boleh menyelesaikan isu merentas domain dalam aplikasi Laravel dengan mudah. Perisian tengah ini bukan sahaja menyokong penghalaan dan pengawal, tetapi juga menyokong konfigurasi global dan konfigurasi kumpulan, dsb., supaya kami boleh mengawal dasar merentas domain dengan lebih bebas dan tepat.
Atas ialah kandungan terperinci Bagaimana untuk menyediakan merentas domain dalam Laravel dengan betul. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!