CorsMiddleware.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace Middlewares;
  3. use Psr\Http\Message\ServerRequestInterface;
  4. use React\Http\Message\Response;
  5. use Libs\ResponseLib;
  6. class CorsMiddleware
  7. {
  8. public function __invoke(ServerRequestInterface $request, callable $next)
  9. {
  10. // Verifica se a origem está na lista de permitidas
  11. $corsHeaders = [
  12. 'Access-Control-Allow-Origin' => '*',
  13. 'Access-Control-Allow-Methods' => 'GET, POST, PUT, DELETE, OPTIONS',
  14. 'Access-Control-Allow-Headers' => 'Content-Type, Authorization, x-user, x-nonce, x-signature',
  15. 'Access-Control-Allow-Credentials' => 'true'
  16. ];
  17. // Lida com requisições OPTIONS (preflight)
  18. if ($request->getMethod() === 'OPTIONS') {
  19. return new Response(
  20. 200,
  21. $corsHeaders
  22. );
  23. }
  24. // Chama o próximo middleware/controlador
  25. $response = $next($request);
  26. // Adiciona cabeçalhos CORS à resposta
  27. foreach ($corsHeaders as $header => $value) {
  28. if ($value) {
  29. $response = $response->withHeader($header, $value);
  30. }
  31. }
  32. return $response;
  33. }
  34. }