CorsMiddleware.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4. * This is my open source code, please do not use it for commercial applications.
  5. * For the full copyright and license information,
  6. * please view the LICENSE file that was distributed with this source code
  7. *
  8. * @author Yuandong<837215079@qq.com>
  9. * @link https://github.com/gzydong/hyperf-chat
  10. */
  11. namespace App\Middleware;
  12. use Hyperf\Utils\Context;
  13. use Psr\Http\Message\ResponseInterface;
  14. use Psr\Http\Message\ServerRequestInterface;
  15. use Psr\Http\Server\MiddlewareInterface;
  16. use Psr\Http\Server\RequestHandlerInterface;
  17. class CorsMiddleware implements MiddlewareInterface
  18. {
  19. public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
  20. {
  21. $response = Context::get(ResponseInterface::class);
  22. $response = $response->withHeader('Access-Control-Allow-Origin', '*')
  23. ->withHeader('Access-Control-Allow-Credentials', 'true')
  24. ->withHeader('Access-Control-Allow-Headers', 'DNT,Keep-Alive,User-Agent,Cache-Control,Content-Type,Authorization');
  25. Context::set(ResponseInterface::class, $response);
  26. if ($request->getMethod() == 'OPTIONS' || $request->getUri()->getPath() == '/favicon.ico') {
  27. return $response;
  28. }
  29. return $handler->handle($request);
  30. }
  31. }