Envío una solicitud de publicación a mi API que contiene el nombre de usuario y la contraseña en el cuerpo. Cuando hago eso con Postman, puedo obtener una respuesta que tiene un cuerpo que contiene un token.
Pero cuando envío la misma solicitud con fetch al frente, recibo una respuesta con un cuerpo vacío.
Mi fe está aquí:
async function login(){ await fetch('/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify( { 'userName' : userName, 'password' : password, } ) } ).then( res => { console.log(res) localStorage.setItem('Authorization',JSON.stringify(res)) } ).catch( err => { console.log("Erorororor: " + JSON.stringify(err)) } ) }¿Cuál es el problema?
Cambié mi código a
.then(res => return res.text()).then(data => console.log(data)).catch(...)y ahora puedo obtener el resultado que quiero.
Es causado por algunas configuraciones de encabezado desde el lado del servidor (por ejemplo, configurar Access-Control-Allow-Origin: * dos veces probablemente cause este problema). Al ajustar los encabezados, puede solucionarlo.
Me encontré con el mismo problema. NO es causado por el código javascript ya que el navegador en sí tampoco obtiene el cuerpo, pero sí los encabezados y las cookies.
Al expandir la pestaña de tiempo, puede ver una advertencia que indica que la solicitud no ha finalizado.
Pero el cartero puede conseguir el cuerpo:
El mismo código funciona en el pasado. Salió hace poco. No estoy seguro de qué ha cambiado, ya que hay muchas cosas cambiadas, por ejemplo, la versión del navegador, la versión actualizada de nodejs, etc.
Al ajustar los encabezados en el lado del servidor, se solucionó el problema.