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

XMLHttpRequest

Boa tarde, procurei o erro na WEB, mas não consigo encontrar o MOTIVO que isso acontece.

Estou tentando capurar os dados vai API de outro servidor que usa um header para de certa forma autenticar a solicitação.

o Problema é CORS, mas não consigo entender onde está o problema, no servidor ou no envio da requisição. Veja que só tenho o erro quando tento modificar o header para passar o token.

E o erro acontece somente no meu javascript, pois usando o Fiddler, Postman funciona, então não sei se é algo no servidor;

O que tenho que fazer ? e Pod eme explicar (para um leigo) o que e como funciona este CORS?

 var xhr = new XMLHttpRequest();

  xhr.open("GET", "http://www.api.iscosistemas.com.br/v1/Cliente/001/001/");
   xhr.setRequestHeader("X-Auth-Token", "C11E87C4-92B4-4654-AB08-47556D985D5E");
   xhr.setRequestHeader("Content-Type", "application/json");
   xhr.setRequestHeader("Access-Control-Allow-Origin", "*");


  xhr.addEventListener("load", function () {
    console.log(xhr.status);
    console.log(xhr.responseText);

  });

  xhr.send();
4 respostas

Vale a pena lembrar que meu Server esta assim

Access-Control-Allow-Origin: *

Ok, então é algo do Browser, quando uso ferramentas externas como postman, ou fiddler não estou sujeito a esta regra de segurança.

mas isso só acontece quando tento adicionar algum header!

é meio estranho.. Sim, se eu tirar o header não tenho o erro, (mas preciso colocar o header pelas regras da minha API)

solução!

Oi José, tudo bom?

Realmente, muitas vezes as regras mudam bastante de um navegador pro outro. Por experiencia, o firefox costuma ser o mais chato nesse sentido.

Se seu sistema estiver sob dominio seguro (HTTPS), acaba sendo mais sensivel ainda.

Entretanto, normalmente, os ajustes de cors são feitos no back-end mesmo. As vezes falta a permissão explicita de algum header, etc. Precisaria ver como o back-end está configurado e dar uma analisada.

Muitas vezes o * não substitui uma declaração direta, dependendo da ferramenta na qual a API foi feita.

Espero ter ajudado de alguma forma haha.

Abraço

Opa, ajudou sim,obrigado.

Li sobre o assunto, a API no back-end realmente precisa implementar o CORS para permitir estas solicitações, mas o projeot é antigo (.net mvc 4) e para permitir deveria atualizar o .net framework e ai já viu né...

Vou refazer as API do meu sistema, então as APIs de sistema como iFood, Uber, são todas abertas... estou certo ?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software