CorsMiddleware.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. /**
  3. * 跨域中间件.
  4. *
  5. * @author nj <nj@gmail.com>
  6. * @date 2019-11-03 14:50:03
  7. */
  8. declare(strict_types=1);
  9. namespace Modules\Manage\Middlewares;
  10. use App\Constants\ManageConstant;
  11. use Hyperf\HttpServer\Contract\RequestInterface;
  12. use Hyperf\Utils\Context;
  13. use Psr\Container\ContainerInterface;
  14. use Psr\Http\Message\ResponseInterface;
  15. use Psr\Http\Message\ServerRequestInterface;
  16. use Psr\Http\Server\MiddlewareInterface;
  17. use Psr\Http\Server\RequestHandlerInterface;
  18. class CorsMiddleware implements MiddlewareInterface
  19. {
  20. public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
  21. {
  22. $response = response();
  23. $response = $response->withHeader('Access-Control-Allow-Origin', '*')
  24. ->withHeader('Access-Control-Allow-Credentials', 'true')
  25. ->withHeader('Access-Control-Max-Age', 1728000)
  26. ->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH, OPTIONS')
  27. ->withHeader('Access-Control-Allow-Headers', 'AUTH-TOKEN,X-TOKEN,AUTH-PASSPORT-TOKEN,DNT,Keep-Alive,User-Agent,Cache-Control,Content-Type,Authorization,' . ManageConstant::HANDSHAKE_HEADER);
  28. Context::set(ResponseInterface::class, $response);
  29. if ($request->getMethod() == 'OPTIONS') {
  30. return $response;
  31. }
  32. return $handler->handle($request);
  33. }
  34. }