Configuración de política CORS con React

Me gustaría acceder a la API de Discourse con React.

Recibo el siguiente error:

localhost/:1 El acceso a XMLHttpRequest en 'https://community.oppkey.host/posts.json' desde el origen 'http://localhost:3000' ha sido bloqueado por la política de CORS: no hay presente el encabezado 'Access-Control-Allow-Origin' en el recurso solicitado.

Estas son mis configuraciones de origen CORS utilizando el panel de administración de Discourse.

En el servidor de Discourse, tengo lo siguiente en /var/discourse/containers/app.yml

Así es como estoy intentando obtener la API de Discourse.

export const DiscoursePanel = () => {
    const [ allData, updateData ] = useState([]);
	
	useEffect(() => {
         const apiEndPoint = 'https://community.oppkey.host/posts.json';
         /* const apiEndPoint = 'https://jsonplaceholder.typicode.com/posts'; */
        console.log("intentando obtener la API en " + apiEndPoint);
		axios
        .get(apiEndPoint)
		.then((res) => {
			const currentData = res.data;
            updateData(currentData);
            console.log("se obtuvo la API");
            console.log(currentData);
		})
		.catch((err) => console.log(err));
    }, []);

Si utilizo un servidor externo con datos falsos, el código de React funciona.

No entiendo cómo funcionan CORS y React en general, así que cualquier ayuda sería apreciada.

Tengo funcionando las cosas con un servidor proxy de API que escribí para retransmitir las llamadas a la API desde mi servidor de Discourse a otro servidor de REST API que estoy utilizando para conectar con React. Aunque esto funciona, es lento. Me gustaría enviar llamadas a la API directamente desde React a los puntos finales de la API de Discourse.

image

1 me gusta

Hola @codetricity

Lamento que no hayas encontrado una respuesta a esta publicación. Estoy usando React fetch y he pasado por pasos similares a los que mencionaste anteriormente, pero todavía está bloqueando “por política de CORS”.

Por favor, ¿encontraste una solución a este problema o un recurso que explique la solución? ¡Gracias!

Hola, no recuerdo qué terminé haciendo. Sin embargo, acabo de comprobar y el sitio de React sigue funcionando extrayendo datos de Discourse (en un servidor separado).

Dado que usar React con Discourse es común, creo que alguien más podrá responder. Lamento no recordar la solución. Buena suerte.

1 me gusta

Hola
¡Gracias por la rápida respuesta! :slight_smile:

Si tienes un minuto y acceso al mismo código, ¿podrías comprobar si se añadieron encabezados adicionales? (sin la información sensible en sí…)

Dice encima de “No hay encabezado ‘Access-Control-Allow-Origin’” así que creo que deberían haberse añadido encabezados adicionales.

¡Gracias de antemano! :smiley: