¿Por qué $ http.get está devolviendo el error 304

Soy nuevo en angular y tengo problemas con un servicio que siempre funcionó, hasta que no funcionó. Mi servicio tiene la siguiente llamada.

this.getForms = function() { return $http.get("/forms"). then(function(response) { return response; }, function(response) { alert("Error finding forms."); }); }; 

Cuando se actualiza la página (safari) se activa getForms, se llama a $ http.get, el punto final de mi servidor Node.js / Express devuelve los datos de los formularios correctamente.

 app.get("/forms", function (req, res) { Form.find({}, function (err, docs) { if (err) { server.handleError(res, err.message, "Failed to get forms."); } else { res.status(200).json(docs); } }); }); 

Pero en lugar de JSON, obtengo un error 304, que indica que los datos están disponibles en la memoria caché. Pero el encabezado de respuesta 304 tiene una cadena de datos vacía, por lo que no devuelve ningún dato del caché.

Mis preguntas son

1) ¿Por qué está llamando a mi servidor si los datos están disponibles en caché?

2) ¿Cómo puedo decirle que no almacene en la memoria caché esta llamada para que la página pueda actualizarse correctamente con los formularios?

Edición: Parece que podría haber un problema potencial con Safari. Ver esta publicación también. NodeJS / express: Caché y código de estado 304

Podría estar malinterpretando lo que significa el código de estado 304. 304 no es un error; solo significa que el recurso que está solicitando desde el servidor no ha cambiado. La respuesta está destinada a no contener datos, ya que espera que el cliente los haya almacenado en caché en algún lugar.

Por ejemplo, los navegadores web intentarán almacenar en caché una imagen para que el servidor no tenga que enviarla nuevamente a través de la red si el usuario vuelve a cargar la página o vuelve a ella más tarde. Sin embargo, el navegador necesita una forma de saber si la imagen está actualizada o no. Si el servidor envía un 304, el navegador sabe que puede continuar usando la copia en su caché.

En su caso, debe implementar algún tipo de almacenamiento en caché para devolver la respuesta anterior si recibe un 304. Alternativamente, creo que podría agregar estos encabezados a la solicitud para obligarlo a devolver datos

  Cache-Control: no-cache, no-store, must-revalidate Pragma: no-cache Expires: 0 
    Intereting Posts