es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

React Native – Solicitud con URL que incluye credenciales.

Tengo que realizar solicitudes a varias URL con diferentes dominios que contienen credenciales.

He logrado enviar una solicitud exitosamente como esta:

const resp = await fetch(`mi-url-aquí`, {
           method: 'POST',
           headers: {
               'Access-Control-Allow-Origin': '*',
               'Content-Type': 'application/json',
               'Authorization': `Basic ${base64.encode(mi-clave-aquí)}`
           },
           body: JSON.stringify(data)
       })

Sin embargo, esto solo funciona para un dominio, mientras que en el otro sigo obteniendo:

  • [TypeError: Error en la solicitud de red] en Android
  • [SyntaxError: Error de análisis JSON: Identificador inesperado “no definido”] en iOS (mientras se ejecuta el método .json (); creo que la solicitud es exitosa pero con una respuesta vacía)

Cada llamada en estos dominios funciona correctamente utilizando PostMan/ThunderClient.

¿Alguna idea de cómo resolver esto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Es importante tener en cuenta que diferentes dominios pueden tener diferentes configuraciones para manejar solicitudes de origen cruzado. Para realizar solicitudes con credenciales, deberá incluir la opción “credentials” en su solicitud de búsqueda y también asegurarse de que el servidor incluya las cabeceras “Access-Control-Allow-*” apropiadas en su respuesta.

    Por ejemplo:

    const resp = await fetch(`mi-url-aquí`, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'Authorization': `Basic ${base64.encode(mi-clave-aquí)}`
        },
        body: JSON.stringify(data),
        credentials: 'include'
    })
    

    La opción “credentials” puede tomar los valores “omitir” (predeterminado), “same-origin” o “incluir”. En este caso, lo establecemos en “incluir” para garantizar que el navegador envíe las cookies o tokens de autenticación relevantes junto con la solicitud.

    Además, asegúrese de que el servidor incluya las cabeceras “Access-Control-Allow-*” apropiadas en su respuesta, como:

    Access-Control-Allow-Origin: https://ejemplo.com
    Access-Control-Allow-Credentials: true
    

    Esto permite que el navegador envíe y reciba cookies o tokens de autenticación en diferentes dominios.

    Si continúa teniendo problemas, puede ser útil intentar usar una herramienta como Wireshark para inspeccionar las solicitudes y respuestas para ver si hay algún error o discrepancia adicional.

Comments are closed.