Este assunto foi perguntado algumas vezes, mas ainda não entendi uma coisa:
Quando leio respostas sobre
Nenhum cabeçalho 'Access-Control-Allow-Origin'
questão, diz a configuração deve ser definida no servidor solicitado, a fim de permitir cross domain: add_header 'Access-Control-Allow-Origin' '*';
.
Mas, por favor me diga por que ao perguntar ao carteiro (que é um cliente), Está funcionando perfeitamente e eu tenho uma resposta do servidor solicitado?
Obrigado
Respostas:
Como @Musa comenta, parece que o motivo é:
A propósito, aqui está uma extensão do Chrome para fazê-la funcionar no seu navegador (esta é para o Chrome, mas você pode encontrar para FF ou Safari).
Verifique aqui se quiser saber mais sobre o Cross-Origin e por que ele está funcionando para extensões.
fonte
Se você usa um site e preenche um formulário para enviar informações (seu número de previdência social, por exemplo), quer ter certeza de que as informações estão sendo enviadas para o site para o qual você pensa que estão sendo enviadas. Portanto, os navegadores foram criados para dizer, por padrão, 'Não envie informações para um domínio diferente daquele que está sendo visitado).
Eventualmente, isso se tornou muito limitado, mas a ideia padrão ainda permanece nos navegadores. Não deixe a página da web enviar informações para um domínio diferente. Mas tudo isso é verificação do navegador. Chrome e firefox, etc, possuem um código embutido que diz 'antes de enviar esta solicitação, vamos verificar se o destino corresponde à página que está sendo visitada'.
Postman (ou CURL na linha cmd) não tem esses cheques integrados. Você está interagindo manualmente com um site para ter controle total sobre o que está enviando.
fonte
CORS
(Compartilhamento de recursos de origem cruzada) eSOP
(Política de mesma origem) são configurações do lado do servidor que os clientes decidem aplicar ou não .Relacionado a clientes
CSRF
ataques.fonte
Embora todas as respostas aqui sejam uma explicação realmente boa do que é cors, a resposta direta à sua pergunta seria por causa das seguintes diferenças entre o carteiro e o navegador.
Navegador: envia uma
OPTIONS
chamada para verificar o tipo de servidor e obter os cabeçalhos antes de enviar qualquer nova solicitação ao endpoint da API. Onde ele verificaAccess-Control-Allow-Origin
. Levar isso em consideraçãoAccess-Control-Allow-Origin
apenas especifica quais CROSS ORIGINS são permitidas, embora por padrão o navegador permita apenas a mesma origem.Postman: Envia direta
GET
,POST
,PUT
,DELETE
pedido etc. sem verificar qual o tipo de servidor é e recebendo o cabeçalhoAccess-Control-Allow-Origin
usandoOPTIONS
chamada para o servidor.fonte
Geralmente, Postman usado para depuração e usado na fase de desenvolvimento. Mas caso você queira bloquear até mesmo do carteiro, tente isso.
fonte
app.js
se você usarnode app.js
para executar o servidor.Use o plugin do carteiro do navegador / cromo para verificar o CORS / SOP como um site. Use o aplicativo da área de trabalho para evitar esses controles.
fonte