Estou acompanhando o projeto Alurapic. No meu projeto, o IP da aplicação Angular é diferente do IP do serviço disponibilizado no curso. Venho conseguindo evoluir bem com o curso, mas me deparei com o seguinte problema: Ao tentar criar uma requisição POST para salvar uma foto, noto que não é enviado um POST para o serviço, mas uma requisição de método OPTION! Além disso, notei nas mensagens de erro o seguinte texto: Requisição cross-origin bloqueada: A política de mesma origem (Same Origin Policy) impede a leitura do recurso remoto em http://localhost:3000/v1/fotos. (Motivo: o cabeçalho CORS 'Access-Control-Allow-Origin' não está presente).
O estranho é que eu já adicionei o cabeçalho "Access-Control-Allow-Origin" do lado do serviço, prova disso é que o método GET está funcionando! Fiz alguns testes aqui e verifiquei que se eu retirar o parametro "headers" da chamada a requisição não vira um OPTION!
POST sem o header não apresenta o problema acima descrito, mas o servidor não consegue se resolver corretamente por falta do cabeçalho:
this.http.post('http://localhost:3000/v1/fotos', JSON.stringify(this.foto))
O meu método cadastrar (conforme ensinado no curso de Angular2):
cadastrar(event) {
event.preventDefault(); // impede que o evento padrao de envio do formulario recarregue a pagina
console.log(this.foto);
// Teste com cabecalho (faz requisicao option => problema que nao consegui resolver)
// persiste no banco
const headers: Headers = new Headers();
headers.append('Content-Type', 'application/json');
this.http.post('http://localhost:3000/v1/fotos', JSON.stringify(this.foto), { headers: headers })
.subscribe(() => {
this.foto = new FotoComponent();
console.log('Foto Salva Com sucesso');
}, erro => console.log(erro));
}
Alguém sabe como resolver esse problema do POST sendo enviado como um OPTION ? Valeu.