CorsMiddleware.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. // Configurações de CORS permissivas
  11. $corsHeaders = [
  12. 'Access-Control-Allow-Origin' => '*', // Permite qualquer origem
  13. 'Access-Control-Allow-Methods' => '*', // Permite qualquer método HTTP
  14. 'Access-Control-Allow-Headers' => '*', // Permite qualquer cabeçalho
  15. // Removido Access-Control-Allow-Credentials para evitar conflitos
  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. }