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.

¿Cómo obtener el parámetro de encabezados de respuesta de una solicitud de obtención de Axios?

Quiero leer el token csrf del encabezado de respuesta de la solicitud get de axios que voy a enviar con la solicitud post de axios como encabezado de solicitud. Mi código es el siguiente:

const FileApi = {
list: (type:string, period:string): AxiosPromise<FilesL[]> =>
axios.get(upload/${type}/${period})
.then(res=> {console.log(res.headers.get("X-CSRF-TOKEN"))}),
upload: (file: File, type:string, period:string): AxiosPromise<string> => {
return axios.post(file/upload/${type}/${period}, form, {
headers: {
'Content-Type': 'multipart/form-data',
'token': X-CSRF-TOKEN,
},
});
}
}

No puedo obtener el token de la solicitud get y, por lo tanto, la solicitud post no funciona ya que X-CSRF-TOKEN está indefinido.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para leer el token csrf del encabezado de respuesta del axios request y utilizarlo en el axios post request, necesitas hacer los siguientes cambios en tu código:

    1. En el método list de FileApi, devuelve la promesa axios que resuelve con el encabezado de respuesta:
      const FileApi= {
        list: (type:string,period:string): AxiosPromise<filesl[]> =>
          axios.get(`upload/${type}/${period}`)
            .then(res=> res.headers), // devuelve los encabezados
        // ...
      }
      
    2. En el método upload de FileApi, llama al método list para obtener los encabezados, después extrae X-CSRF-TOKEN de los encabezados y úsalo en el encabezado de la solicitud:
      const FileApi= {
        // ...
        upload: (file:File,type:string,period:string): AxiosPromise<string> => {
          return FileApi.list(type, period) // llama al método list
            .then(headers => {
              const csrfToken = headers["X-CSRF-TOKEN"] // extrae el token de los encabezados
              return axios.post(`file/upload/${type}/${period}`,form,{
                headers :{
                  'Content-Type':'multipart/form-data',
                  'token' : csrfToken, // utiliza el token en el encabezado
                },
              })
            })
        }
      }
      

    Con estos cambios, el método upload debería funcionar correctamente e incluir el token csrf en el encabezado de la solicitud.</filesl[]>

Comments are closed.