Tengo una aplicación create-react-con la que se sirve desde express. Express solo sirve como proxy para la aplicación. La lógica de la aplicación está en CRA.
Estoy tratando de llamar a una API y descargar un archivo. La API responde con un encabezado de "Disposición de contenido" que contiene el nombre del archivo. No puedo recuperar el encabezado en mi llamada.
Cuando llamo a la API en Postman/chrome-dev-tools, puedo ver el encabezado disponible.
Por favor vea mi código abajo. El código del nombre de archivo está comentado porque res.headers está vacío.
let filename = 'test-file-name'; // <--- default file name const output = fetch(transactionReportPath(), { headers: { accept: 'text/csv', Authorization: `Bearer ${getToken()}` } }) .then((res) => { console.log(res.headers) // <---- empty object // filename = res.headers.get('Content-Disposition').split(";")[1] return res.blob()}) .then((blob) => { const file = window.URL.createObjectURL(blob); const a = document.createElement('a'); a.href = file; a.download = filename; document.body.appendChild(a); a.click(); a.remove(); });Fue capaz de resolver este problema. Faltaba un encabezado en la respuesta del servidor.
response["Access-Control-Expose-Headers"] = "Content-Disposition"Agregar este encabezado en la respuesta comenzó a exponer el nombre de archivo faltante.