Tengo una API que puedo consultar para obtener una imagen, que tiene algunos encabezados que me gustaría leer. En la documentación de la API (construida con fastAPI), leí que el cuerpo de la respuesta es la imagen y que los encabezados de la respuesta son algo así
Response headers access-control-allow-credentials: true content-type: image/png date: Sun,05 Dec 2021 12:08:58 GMT prediction: COVID - 19 server: uvicorn transfer-encoding: chunkedMe gustaría acceder al encabezado de predicción.
Ahora, cuando hago la solicitud a través de axios y React, pido que la respuesta sea del tipo arraybuffer o blob, para poder trazarla en una página web. Lo convierto y luego lo trazo de alguna manera.
axios.post(Endpoint + 'predict', formData, { headers: { 'Content-Type': 'multipart/form-data' }, params: { xmin, ymin, xmax, ymax, }, responseType: 'arraybuffer' }).then(response => { console.log(response) let base64ImageString = Buffer.from(response.data, 'binary').toString('base64') let srcValue = "data:image/png;base64,"+base64ImageString setImage(srcValue) console.log(response.headers) })Dado que la solicitud es para arraybuffer o blob, ¿cómo debo acceder al encabezado de predicción?
Si trato de registrar los encabezados de response.headers , obtengo esto:
{ "content-type": "image/png" }pero no puedo acceder al encabezado de predicción.
Si se requiere más información, puedo proporcionarla. Gracias por adelantado.
EDITAR simplemente agregue el parámetro de expose_headers a la configuración CORS del código fastAPI. ver documentos aquí
La prediction no es un encabezado de respuesta incluido en la lista segura de CORS, por lo que no está disponible para el código del lado del cliente a menos que la API otorgue permiso explícitamente con el encabezado de respuesta Access-Control-Expose-Headers .
Cambie la API para incluir:
Access-Control-Expose-Headers: prediction en su respuesta (en el mismo fragmento de código que agrega access-control-allow-credentials ).