Rumah >pembangunan bahagian belakang >tutorial php >Cara menyediakan perkongsian sumber merentas domain (CORS) menggunakan perisian tengah dalam rangka kerja Slim
Cara untuk menyediakan perkongsian sumber silang (CORS) menggunakan middleware dalam rangka kerja Slim
Perkongsian sumber merentas domain (CORS) ialah mekanisme yang membolehkan pelayan menetapkan beberapa maklumat tambahan dalam pengepala respons HTTP untuk memaklumkan Sama ada penyemak imbas membenarkan permintaan merentas domain. Dalam sesetengah projek dengan pemisahan bahagian hadapan dan bahagian belakang, mekanisme CORS boleh digunakan untuk merealisasikan permintaan silang domain bahagian hadapan untuk antara muka bahagian belakang.
Apabila menggunakan rangka kerja Slim untuk membangunkan API REST, kami boleh menggunakan perisian tengah untuk menetapkan pengepala respons HTTP berkaitan CORS untuk membenarkan permintaan merentas domain. Berikut ialah contoh untuk menunjukkan cara menggunakan perisian tengah untuk menetapkan CORS dalam rangka kerja Slim.
Pertama, kita perlu mencipta kelas perisian tengah tersuai untuk menetapkan pengepala respons HTTP berkaitan CORS. Cipta fail bernama CorsMiddleware dengan kandungan berikut:
<?php namespace AppMiddleware; use PsrHttpMessageRequestInterface; use PsrHttpMessageResponseInterface; use PsrHttpServerMiddlewareInterface; use PsrHttpServerRequestHandlerInterface; class CorsMiddleware implements MiddlewareInterface { public function process(RequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { $response = $handler->handle($request); return $response ->withHeader('Access-Control-Allow-Origin', '*') ->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS') ->withHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization'); } }
Kod di atas mentakrifkan kelas CorsMiddleware dan melaksanakan antara muka MiddlewareInterface. Dalam kaedah proses, kami memperoleh objek tindak balas yang diminta dengan memanggil kaedah pemegang $handler, dan kemudian menggunakan kaedah withHeader objek tindak balas untuk menetapkan maklumat pengepala CORS yang sepadan.
Menggunakan middleware ini dalam rangka kerja Slim adalah sangat mudah, kita hanya perlu mendaftarkan middleware dalam konfigurasi aplikasi. Dalam fail index.php aplikasi, tambahkan kod berikut:
<?php use AppMiddlewareCorsMiddleware; use SlimFactoryAppFactory; require __DIR__ . '/../vendor/autoload.php'; $app = AppFactory::create(); // 注册CorsMiddleware中间件 $app->add(new CorsMiddleware()); // 添加路由和处理逻辑 $app->get('/', function ($request, $response, $args) { $response->getBody()->write("Hello, world!"); return $response->withHeader('Content-Type', 'text/plain'); }); $app->run();
Dalam kod di atas, kami mendaftarkan perisian tengah CorsMiddleware ke dalam aplikasi melalui kaedah $app->add. Dengan cara ini, setiap permintaan akan diproses oleh perisian tengah ini dan pengepala respons CORS yang sepadan akan ditetapkan.
Kini kami boleh melancarkan aplikasi Slim dan menghantar permintaan merentas domain untuk menguji sama ada CORS berfungsi. Anda boleh menggunakan alat pembangun penyemak imbas anda atau alatan permintaan HTTP lain untuk menghantar permintaan OPTIONS ke laluan akar aplikasi kami. Jika semuanya disediakan dengan betul, anda sepatutnya dapat melihat bahawa pengepala respons HTTP mengandungi medan Access-Control-Allow-Origin, Access-Control-Allow-Methods dan Access-Control-Allow-Headers, dengan itu membenarkan CORS cross- permintaan domain.
Melalui contoh di atas, kami mempelajari cara menggunakan perisian tengah dalam rangka kerja Slim untuk menyediakan perkongsian sumber merentas domain CORS. Kaedah ini sangat mudah dan fleksibel serta boleh dikembangkan dan disesuaikan mengikut keperluan dalam projek sebenar. Di bawah aliran semasa pemisahan bahagian hadapan dan bahagian belakang, kaedah ini sangat berguna dan boleh membantu kami menangani masalah permintaan silang domain bahagian hadapan.
Atas ialah kandungan terperinci Cara menyediakan perkongsian sumber merentas domain (CORS) menggunakan perisian tengah dalam rangka kerja Slim. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!