Rumah > rangka kerja php > Laravel > teks badan

Bagaimana untuk menyediakan merentas domain dalam Laravel dengan betul

PHPz
Lepaskan: 2023-04-13 10:27:38
asal
2474 orang telah melayarinya

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.

1. Pasang perisian tengah "Barryvdh-cors"

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
Salin selepas log masuk

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,
];
Salin selepas log masuk

Kemudian tambahkan kod berikut dalam tatasusunan alias:

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

2. Konfigurasikan perisian tengah

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,
];
Salin selepas log masuk

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

3. Gunakan perisian tengah dalam laluan atau pengawal

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
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

4. Kesimpulan

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan