2017-04-10 1 views
2

J'utilise un plugin Jenkins qui utilise la bibliothèque OkHttp pour gérer l'intégration avec l'API Github.Pourquoi OkHttp traite-t-il l'en-tête Date de la même manière qu'il traite l'en-tête Last-Modified lors de la définition de l'en-tête If-Modified-Since?

Github/repos /: owner /: le point de terminaison repo renvoie l'erreur 404 lorsque OkHttp tente de demander la ressource avec un jeton qui n'est pas autorisé à accéder à la ressource. Lorsque la portée du jeton est développée pour lui permettre d'accéder à la ressource, OkHttp effectue la demande avec un en-tête If-Modified-Since. La valeur de l'en-tête est définie sur la valeur de l'en-tête Date à partir de la réponse de 404. La réponse de cette deuxième requête est HTTP 304. Selon l'équipe de support de Github, ce comportement est le bon comportement, puisque la ressource (les données derrière le/end /: owner /: repo endpoint) n'a pas été modifiée depuis la première requête. fabriqué. Cependant, cela signifie que le client OkHttp utilise maintenant la réponse 404 mise en cache.

Il semble que l'en-tête Date était destiné au calcul de la fraîcheur, et non à la vérification de la dernière modification d'une ressource. RFC 7232 section 3.3 indique que les clients peuvent utiliser la valeur de l'en-tête Date comme valeur If-Modified-Since, mais je n'ai pas trouvé d'autres publications sur le Web suggérant que ce comportement soit accepté. Je ne vois aucune référence à l'en-tête Date dans Mozilla's documentation on the If-Modified-Since header. La loi de Postel ne suggère-t-elle pas que OkHttp devrait essayer de ne pas abuser de l'en-tête Date en l'utilisant comme une autre source pour l'en-tête If-Modified-Since?

Répondre

1

Les RFC définissent le comportement approprié. Si le RFC dit qu'un en-tête Date peut être utilisé avec If-Modified-Since, alors il peut l'être. Envisagez de persuader GitHub d'invalider les caches lorsqu'une étendue est développée. Si une réponse a été signifiée le 2017-03-01 et que la portée d'un jeton a été élargie le 2017-04-01, la ressource a été modifiée le 2017-04-01.

Votre autre option consiste à désactiver le cache d'OkHttp. Comme chaque cache il viole de la loi de Postel en conséquence d'honorer les directives de configuration de cache buggy.