Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Onde é verificada a permissão e autorizado ou negado o acesso aos dados.

Bom dia,

Uma dúvida ficou no ar.

O cliente faz uma requisição ao servidor http://localhost/3000/principal.html que responde com a página inicial do Alura Typer.

Em seguida o cliente faz uma requisiçõa a esse mesmo servidor para que ele execute a função de frases aleatórias. Como a função .get está mapeada para http://localhost/3001, o servidor com a porta 3000 requisita a ele que retorne alguma frase aleatoriamente.

Aí vem a pergunta.

A validação de protocolo, IP e porta é feita no momento em que o servidor de porta 3001 recebe a requisição ou quando ele vai devolver a resposta para o servidor de porta 3000?

Desde já agradeço a ajuda.

3 respostas

A validação de Same Origin Policy é feita pelo navegador, quando fazemos uma requisição AJAX.

Quando o nosso usuário, que está no endereço http://localhost/3000/principal.html, tenta fazer uma requisição AJAX pro servidor http://localhost/3001 , o navegador dele vai ver que está tentando mandar uma requisição para uma outra origem e não vai permitir a requisição, a não ser que no servidor destino esteja com CORS habilitado.

Boa noite,

Certo, mas para verificar se o CORS está habilitado no outro servidor, provavelmente eu terei que ir até ele e verificar certo?

Logo, a requisição não chega a ser barrada de início pelo navegador, somente no recebimento da resposta, que tem no seu header a informação de que o CORS está habilitado. Estou certo?

Abraço.

solução!

Isso!

Esse "ir até ele" é uma requisição chamada de "Pré Flight" , que é como se fosse um aperto de mãos entre o Navegador e o Servidor. O navegador (cliente) pergunta ao servidor enviando uma requisição mais simples , se ele o servidor aceita receber a requisição original que queremos mandar.

O servidor, se estiver configurado com o CORS, responde com aquele header Access-Control-Allow-Origin, dizendo de quais origens ele aceita receber a requisição.

Se o cliente estiver dentro destas origens, ele envia a requisição normalmente. Caso contrário, ele dá o erro falando que não pode enviar a requisição.