Quelle est la raison d'être de l'en-tête HTTP Date?
Question
J'ai lu des RFC 2616 , mais toujours Je me demande à quoi sert le champ Date. Il existe le champ Last-Modified, qui a en fait une signification autre que celle de servir des métadonnées, c'est-à-dire pour la mise en cache ('If-Modified-Since').
Mais à quoi sert-il de doubler les informations dans un en-tête de date séparé?
La solution
Selon la spécification , elle est utilisée dans les calculs d'âge. Si vous ne savez pas à quelle heure le serveur pense qu'il est, vous ne pourrez pas calculer l’âge " age " d'une ressource. Voici le texte pertinent de la spécification:
Résumé de l'algorithme de calcul de l'âge lorsqu'un cache reçoit une réponse:
valeur_âge
est la valeur de Age: en-tête reçu par le cache avec cette réponse.
valeur_date
est la valeur de l'en-têteDate:
du serveur d'origine
request_time
est l'heure (locale) à laquelle le cache a fait la demande qui a abouti à cette réponse en cache
temps_réponse
est l'heure (locale) à laquelle le cache a reçu le réponse
maintenant
est l'heure actuelle (locale)apparent_age = max(0, response_time - date_value); corrected_received_age = max(apparent_age, age_value); response_delay = response_time - request_time; corrected_initial_age = corrected_received_age + response_delay; resident_time = now - response_time; current_age = corrected_initial_age + resident_time;