Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro CORS quando tento uma XMLHttpRequest com JavaScript

Access to XMLHttpRequest at 'http://localhost:8080/getPublicacoes/buscar-mais?posicao=3' from origin 'http://localhost:5050' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

Tentei a resposta na API:

return new Response($resposta, 200, ['Access-Control-Allow-Origin' => '*']);

Mas não funciona.

Meu código Js puro

btn.addEventListener('click', (event) => { event.preventDefault(); let qntPublicacoes = $$(".publicacao").length;

console.log(qntPublicacoes);

let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {

    if (this.readyState == 4 && this.status == 200) {
        let publicacoes = JSON.parse(xhr.responseText);
        let montarPublicacoes = new MontarPublicacoes();
        let arrayPublicacoes = montarPublicacoes.montarPublicacoes(publicacoes);

        arrayPublicacoes.forEach(publicacao => {
            areaPublicacoes.appendChild(publicacao);
        });

    } else {
        console.log("error");
    }
}
xhr.open("GET", "http://localhost:8080/getPublicacoes/buscar-mais?posicao=3");
xhr.setRequestHeader("Authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzdWFyaW8ifQ.Yytcv05WKMtD5T4-saEgpZxICv7Vhp6uCnfeP_N2Uew");

xhr.send();

})

1 resposta
solução!

Consegui resolver.

Basta importar para o seu projeto o seguinte:

  • composer require cors
  • composer require nelmio/cors-bundle

Isso criar um novo arquivo em config/packages/nelmio_cors.yaml. Basta edita-lo e deixar da seguinte maneira:

nelmio_cors:

    defaults:

       origin_regex: true
        allow_origin: ['*']
        allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
        allow_headers: ['*', 'Authorization']
        expose_headers: ['Link']
        max_age: 86400

    paths:
        '^/': ~