Este tema se ha preguntado un par de veces, pero todavía no entiendo algo:
Cuando leo respuestas sobre
Sin encabezado 'Access-Control-Allow-Origin'
cuestión, se dice que un ajuste se debe establecer en el servidor solicitado con el fin de permitir que varios dominios: add_header 'Access-Control-Allow-Origin' '*';
.
Pero, por favor, dígame por qué cuando le pregunta al cartero (que es un cliente), funciona como un encanto y tengo una respuesta del servidor solicitado
Gracias
Respuestas:
Como lo comenta @Musa, parece que el motivo es que:
Por cierto, aquí tienes una extensión de Chrome para que funcione en su navegador (esta es para Chrome, pero puede encontrarla para FF o Safari).
Marque aquí si desea obtener más información sobre Cross-Origin y por qué funciona para las extensiones.
fuente
Si utiliza un sitio web y completa un formulario para enviar información (su número de seguro social, por ejemplo), desea asegurarse de que la información se envíe al sitio al que cree que se envía. Por lo tanto, los navegadores se crearon para decir, de forma predeterminada, 'No envíe información a un dominio que no sea el que se está visitando'.
Con el tiempo, eso se volvió demasiado limitante, pero la idea predeterminada todavía permanece en los navegadores. No permita que la página web envíe información a un dominio diferente. Pero todo esto es una comprobación del navegador. Chrome y Firefox, etc. tienen un código integrado que dice "antes de enviar esta solicitud, vamos a verificar que el destino coincida con la página que se está visitando".
Postman (o CURL en la línea cmd) no tiene esos controles incorporados. Estás interactuando manualmente con un sitio para tener control total sobre lo que estás enviando.
fuente
CORS
(Uso compartido de recursos entre orígenes) ySOP
(Política del mismo origen) son configuraciones del lado del servidor que los clientes deciden hacer cumplir o no .Relacionado con los clientes
CSRF
ataques.fuente
Si bien todas las respuestas aquí son una muy buena explicación de lo que es cors, la respuesta directa a su pregunta sería debido a las siguientes diferencias cartero y navegador.
Navegador: envía una
OPTIONS
llamada para verificar el tipo de servidor y obtener los encabezados antes de enviar cualquier solicitud nueva al punto final de la API. Donde buscaAccess-Control-Allow-Origin
. Teniendo esto en cuentaAccess-Control-Allow-Origin
encabezado solo especifica qué ORÍGENES CRUZADOS están permitidos, aunque por defecto el navegador solo permitirá el mismo origen.Cartero: Envía directa
GET
,POST
,PUT
,DELETE
etc. solicitud sin la comprobación de qué tipo de servidor es y conseguir la cabeceraAccess-Control-Allow-Origin
mediante el uso deOPTIONS
llamada al servidor.fuente
Generalmente, Postman se usa para depurar y se usa en la fase de desarrollo. Pero en caso de que quiera bloquearlo incluso del cartero, intente esto.
fuente
app.js
si lo usanode app.js
para ejecutar el servidor.Utilice el complemento de cartero de navegador / Chrome para comprobar el CORS / SOP como un sitio web. En su lugar, utilice la aplicación de escritorio para evitar estos controles.
fuente