Rumah  >  Artikel  >  rangka kerja php  >  Cara menggunakan perisian tengah untuk melaksanakan perkongsian sumber silang asal (CORS) dalam Laravel

Cara menggunakan perisian tengah untuk melaksanakan perkongsian sumber silang asal (CORS) dalam Laravel

WBOY
WBOYasal
2023-11-02 13:57:281463semak imbas

Cara menggunakan perisian tengah untuk melaksanakan perkongsian sumber silang asal (CORS) dalam Laravel

Cara menggunakan middleware untuk melaksanakan perkongsian sumber silang asal (CORS) dalam Laravel

Ikhtisar:

#🎜 Perkongsian Sumber Domain silang (CORS) ialah mekanisme penyemak imbas yang membenarkan aplikasi web berkongsi sumber di bawah nama domain yang berbeza. Laravel, rangka kerja PHP yang popular, menyediakan cara mudah untuk mengendalikan CORS dengan menggunakan perisian tengah untuk mengendalikan permintaan merentas domain.

Artikel ini akan memperkenalkan anda kepada cara menggunakan perisian tengah untuk melaksanakan CORS dalam Laravel, termasuk cara mengkonfigurasi perisian tengah, menetapkan nama domain yang dibenarkan dan kaedah permintaan serta menyediakan contoh kod khusus.

Langkah 1: Cipta perisian tengah CORS

Pertama, kita perlu mencipta perisian tengah untuk mengendalikan CORS. Gunakan arahan berikut dalam terminal untuk menjana fail middleware baharu:

php artisan make:middleware CorsMiddleware

Arahan ini akan berada dalam app/Http/MiddlewareCorsMiddleware.php dijana dalam direktori /code>.

app/Http/Middleware目录下生成一个名为CorsMiddleware.php的文件。

打开CorsMiddleware.php文件,修改handle方法如下:

public function handle($request, Closure $next)
{
    $response = $next($request);
    
    $response->header('Access-Control-Allow-Origin', '*');
    $response->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
    $response->header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
    
    return $response;
}

在这个中间件中,我们设置了三个响应头,分别是:Access-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Allow-HeadersAccess-Control-Allow-Origin允许所有源进行跨域访问,您也可以根据需要设置特定的域名。Access-Control-Allow-Methods定义允许的请求方法,这里我们设置了常见的GET、POST、PUT、DELETE和OPTIONS。Access-Control-Allow-Headers允许的请求头中包含了Content-Type和Authorization。

步骤二:注册CORS中间件

打开app/Http/Kernel.php文件,找到$middleware数组,并在数组中添加以下行代码:

protected $middleware = [
    // ...
    AppHttpMiddlewareCorsMiddleware::class,
];

以上代码将添加CorsMiddleware中间件到全局中间件堆栈中,以便它可以应用于每一个请求。

步骤三:使用CORS中间件

为了验证我们的CORS中间件是否有效,我们可以在一个API路由中使用它。在routes/api.php文件中,添加一个GET路由,并为该路由使用CorsMiddleware中间件:

Route::get('/test', function () {
    return response()->json(['message' => 'Hello World']);
})->middleware('cors');

这个路由将返回一个包含"Hello World"消息的JSON响应。

步骤四:验证CORS设置

现在我们可以使用任何支持跨域访问的客户端,例如浏览器或REST客户端进行验证。在浏览器的开发工具中,我们可以看到响应的头部信息。

例如,在Chrome浏览器上,打开开发者工具,切换到"Network"选项卡,然后访问我们在步骤三中定义的路由/api/test。在响应头部信息中,我们应该看到Access-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Allow-HeadersBuka fail CorsMiddleware.php dan ubah suai kaedah handle seperti berikut:

rrreee

Dalam perisian tengah ini, kami set Terdapat tiga pengepala respons, iaitu: Access-Control-Allow-Origin, Access-Control-Allow-Methods dan Access-Control-Allow-Headers. <code>Access-Control-Allow-Origin membenarkan akses merentas domain daripada semua sumber dan anda juga boleh menetapkan nama domain tertentu seperti yang diperlukan. Access-Control-Allow-Methods mentakrifkan kaedah permintaan yang dibenarkan Di sini kami menetapkan GET, POST, PUT, DELETE dan OPTIONS biasa. Pengepala permintaan yang dibenarkan bagi Access-Control-Allow-Headers termasuk Jenis Kandungan dan Keizinan.

Langkah 2: Daftar CORS middleware

Buka fail app/Http/Kernel.php dan cari $middleware tatasusunan dan tambah baris kod berikut dalam tatasusunan:

rrreee#🎜🎜#Kod di atas akan menambah CorsMiddleware middleware pada tindanan middleware global supaya ia boleh digunakan pada setiap permintaan . #🎜🎜##🎜🎜#Langkah 3: Gunakan perisian tengah CORS #🎜🎜##🎜🎜# Untuk mengesahkan sama ada perisian tengah CORS kami sah, kami boleh menggunakannya dalam laluan API. Dalam fail routes/api.php, tambahkan laluan GET dan gunakan perisian tengah CorsMiddleware untuk laluan ini: #🎜🎜#rrreee#🎜🎜#Laluan ini akan mengembalikan A Respons JSON yang mengandungi mesej "Hello World". #🎜🎜##🎜🎜#Langkah 4: Sahkan tetapan CORS #🎜🎜##🎜🎜#Kini kami boleh menggunakan mana-mana pelanggan yang menyokong akses merentas domain, seperti penyemak imbas atau klien REST untuk pengesahan. Dalam alat pembangunan penyemak imbas, kita boleh melihat maklumat pengepala respons. #🎜🎜##🎜🎜#Sebagai contoh, pada penyemak imbas Chrome, buka alat pembangun, tukar ke tab "Rangkaian", dan kemudian akses laluan yang kami takrifkan dalam langkah tiga: /api/test . Dalam pengepala respons, kita harus melihat Access-Control-Allow-Origin, Access-Control-Allow-Methods dan Access-Control-Allow- Headers kod> tetapan. #🎜🎜##🎜🎜#Jika semuanya baik-baik saja, anda sepatutnya boleh menghantar permintaan HTTP daripada nama domain yang berbeza dan mendapat respons dengan jayanya. #🎜🎜##🎜🎜#Kesimpulan: #🎜🎜##🎜🎜# Dengan menggunakan perisian tengah, rangka kerja Laravel menyediakan cara mudah untuk mencapai perkongsian sumber merentas domain. Artikel ini memperincikan cara membuat perisian tengah CORS, mendaftar perisian tengah dan menggunakan perisian tengah untuk mengendalikan permintaan merentas domain. Harap artikel ini dapat membantu anda melaksanakan CORS dalam Laravel dan menyediakan contoh kod yang mencukupi untuk rujukan anda. #🎜🎜#

Atas ialah kandungan terperinci Cara menggunakan perisian tengah untuk melaksanakan perkongsian sumber silang asal (CORS) dalam Laravel. 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