Dalam aplikasi web moden, Perkongsian Sumber Silang Asal (CORS) telah menjadi ciri penting. Apabila menggunakan rangka kerja Laravel untuk membangunkan aplikasi web, kami sering menghadapi situasi di mana akses merentas domain perlu dicapai. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Laravel untuk mencapai perkongsian sumber merentas domain supaya kami boleh membangunkan aplikasi web yang lebih fleksibel dan cekap.
Apakah perkongsian sumber merentas domain?
Dalam pembangunan web, perkongsian sumber silang (CORS) merujuk kepada penggunaan sumber tapak web lain dalam halaman satu tapak web. Contohnya, satu tapak web (tapak web A) menggunakan antara muka API tapak web lain (tapak web B) untuk mendapatkan data, dsb. Disebabkan Dasar Asal Sama penyemak imbas, penggunaan terus sumber daripada tapak web lain tidak dibenarkan. Dalam kes ini, kita perlu menggunakan perkongsian sumber merentas domain untuk membenarkan data antara domain berbeza berinteraksi.
Bagaimanakah Laravel melaksanakan akses merentas domain?
Rangka kerja Laravel menyediakan banyak middleware praktikal yang boleh mencapai akses merentas domain dengan mudah. Di bawah ini kami akan memperkenalkan dua kaedah pelaksanaan.
Kaedah pelaksanaan pertama: menggunakan perisian tengah CORS Laravel
Pertama, anda perlu memperkenalkan pakej perisian tengah CORS pihak ketiga Kami boleh menggunakan pakej laravel-cors :
composer require barryvdh/laravel-cors
Daftar perisian tengah dalam fail appHttpKernel.php :
protected $middleware = [ // Other middlewares BarryvdhCorsHandleCors::class, ];
Kemudian konfigurasikan parameter merentas domain dalam fail config/cors.php, seperti ditunjukkan di bawah:
<?php return [ 'paths' => [ 'api/*', '/*' ], 'allowed_methods' => [ 'GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', ], 'allowed_origins' => [ '*', ], 'allowed_origins_patterns' => [], 'allowed_headers' => [ 'Content-Type', 'X-Requested-With', 'Authorization', 'Accept', 'Origin', ], 'exposed_headers' => [], 'max_age' => 0, 'supports_credentials' => true, ];
Dalam kod di atas, atribut laluan Ia mentakrifkan laluan API yang perlu menyokong domain silang Atribut kaedah_boleh mentakrifkan kaedah HTTP yang membenarkan domain asal Atribut yang dibenarkan mentakrifkan sumber yang membenarkan merentas domain (* menunjukkan semua sumber ). Atribut allowed_headers mentakrifkan tajuk permintaan yang membenarkan penghantaran merentas domain.
Kaedah pelaksanaan kedua: menggunakan perisian tengah Laravel
Ia juga merupakan pilihan yang baik untuk melaksanakan akses merentas domain melalui perisian tengah Laravel tersuai. Dengan cara ini, kita perlu menulis perisian tengah Laravel sendiri untuk mengendalikan permintaan akses merentas domain. Berikut ialah contoh pelaksanaan asas:
Pertama, kita perlu mencipta fail CorsMiddleware.php dalam direktori app/Http/Middleware , Kandungan fail adalah seperti berikut:
<?php namespace AppHttpMiddleware; use Closure; class CorsMiddleware { public function handle($request, Closure $next) { $response = $next($request); $response->header('Access-Control-Allow-Origin', '*') ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS') ->header('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Authorization'); return $response; } }
Kaedah pemegang dalam kod di atas boleh dilaksanakan apabila setiap permintaan tiba, membenarkan akses merentas domain dengan menetapkan pengepala respons.
Seterusnya kita perlu mendaftarkan CorsMiddleware ke dalam rangka kerja Laravel untuk kegunaan mudah. Tambahkan kod berikut pada fail app/Http/Kernel.php:
protected $routeMiddleware = [ // Other middleware 'cors' => AppHttpMiddlewareCorsMiddleware::class, ];
CorsMiddleware::class dalam kod di atas ialah perisian tengah CorsMiddleware tersuai kami Selepas mendaftar di sini, anda boleh menggunakannya dalam program.
Dalam pengawal atau laluan yang perlu menyokong merentas domain, gunakan CorsMiddleware berdaftar, contohnya:
rreeeSetakat ini, kami telah berjaya melaksanakan akses merentas domain di bawah rangka kerja Laravel dalam dua cara. Dalam pembangunan sebenar, kami boleh memilih kaedah yang sesuai dengan kami mengikut keperluan khusus untuk mencapai akses merentas domain, menjadikan aplikasi web kami lebih fleksibel dan cekap.
Atas ialah kandungan terperinci laravel melaksanakan akses merentas domain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!