Estoy desarrollando una aplicación web en Angular 10 que funciona de la siguiente manera:
Estoy lidiando con el problema CORS. No tengo permiso para agregar código al servidor que estoy buscando.
Quiero poder:
Mi objetivo es implementar la solución en un servidor Apache.
Aquí está el error CORS con el que estoy lidiando:
Bloqueo de una solicitud de origen cruzado: la política "Mismo origen" no permite ver el recurso remoto ubicado en https://wwwfrance1.CENSORED.eu.com/api/?apikey=CENSORED .
Motivo: falta el encabezado CORS "Access-Control-Allow-Origin". Código de estado: 200.
Esto es lo que he intentado:
Uso de la extensión MOSIF mozilla (funciona, pero no es sostenible para la implementación y, por alguna razón, cuando ignoro la seguridad de CORS, ya no puedo publicar en mi base de datos)
Agregar un encabezado en mi solicitud de búsqueda, como:
/******API SEACH****/ /***Global Update***/ private updateClients() { let xmlRequestPromise = fetch('https://wwwfrance1.CENSORED.eu.com/api/?apikey=CENSORED&service=list_clients', { method: 'GET', headers: { 'Access-Control-Allow-Origin': '*', } }) .then(async response => this.clients = this.regexSearchClient(await response.text())) return xmlRequestPromise }Pero eso tampoco funciona. He verificado que el encabezado aparece en la solicitud.
¿Cómo proceder?
¿Qué es CORS?
El intercambio de recursos de origen cruzado es un mecanismo que permite que los recursos restringidos en una página web se soliciten desde otro dominio fuera del dominio desde el que se sirvió el primer recurso. de wiki
En términos simples, solo un servidor web interno puede enviar solicitudes que son potencialmente peligrosas para su servidor web, y las solicitudes de otros servidores simplemente se bloquean.
Pero se permiten pocas solicitudes HTTP. Pocos de los métodos permitidos son GET, HEAD, POST.
¿Cómo resuelvo el problema?
Aparentemente, en esta circunstancia, no puede enviar una solicitud de recuperación a un servidor web que tenga un encabezado CORS. En su lugar, puede realizar una solicitud GET al servidor web, ya que un servidor web que tiene CORS permite solicitudes HTTP GET.
Nota : si envía una solicitud GET a un servidor web usando angular en su navegador, no funcionará, ya que las solicitudes GET de conversión del navegador en solicitudes de búsqueda y las solicitudes de búsqueda no están permitidas desde un servidor web con CORS. En su lugar, envíe una solicitud GET desde un servidor web/máquina local en lugar de un navegador.
Cree su propio servidor y haga una ruta que obtenga esa API. Desde su aplicación Angular, obtenga esa ruta en su servidor.
Tienes que usar un paquete como un middleware. Si está utilizando nodejs-framework expressjs. Al principio, debe ejecutar npm install cors -force Luego, agregue el código que se proporciona a continuación:
const cors=require('cors') app.use(cors({origin:true}))