Cara menggunakan rangka kerja Hyperf untuk pemprosesan merentas domain
Cross-domain bermakna penyemak imbas akan mengikut dasar asal yang sama apabila meminta sumber daripada pelayan untuk melindungi keselamatan data pengguna. Dasar asal yang sama memerlukan penyemak imbas hanya boleh menghantar permintaan kepada pelayan dengan nama domain yang sama, port yang sama dan protokol yang sama. Walau bagaimanapun, dalam beberapa kes, aplikasi kami mungkin perlu meminta sumber daripada pelayan dengan nama domain yang berbeza, yang memerlukan pemprosesan merentas domain.
Hyperf ialah rangka kerja PHP berprestasi tinggi berdasarkan Swoole, direka bentuk untuk memberikan skalabiliti dan kecekapan pembangunan yang berkuasa. Berikut akan memperkenalkan cara untuk melaksanakan pemprosesan silang domain dalam rangka kerja Hyperf dan memberikan contoh kod khusus.
<?php declare(strict_types=1); namespace AppMiddleware; use HyperfHttpMessageStreamSwooleStream; use PsrHttpMessageResponseInterface; use PsrHttpMessageServerRequestInterface; use PsrHttpServerMiddlewareInterface; use PsrHttpServerRequestHandlerInterface; class CorsMiddleware implements MiddlewareInterface { public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { $response = $handler->handle($request); // 设置允许跨域的域名,* 表示允许任意域名跨域 $response = $response->withHeader('Access-Control-Allow-Origin', '*'); // 设置允许的请求方法 $response = $response->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); // 设置允许的请求头 $response = $response->withHeader('Access-Control-Allow-Headers', 'Content-Type,Authorization'); // 设置是否允许带认证信息(例如cookie)的请求 $response = $response->withHeader('Access-Control-Allow-Credentials', 'true'); // 设置预检请求的缓存时间(秒) $response = $response->withHeader('Access-Control-Max-Age', '3600'); return $response; } }
<?php declare(strict_types=1); return [ 'http' => [ AppMiddlewareCorsMiddleware::class, // 其他中间件... ], ];
Atas ialah kandungan terperinci Cara menggunakan rangka kerja Hyperf untuk pemprosesan merentas domain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!