2016-09-07 2 views
0

Il est dit que Transport va gérer le Content-Encoding automatiquement (comme la décompression automatique lors de la lecture de resp.Body).Le proxy HTTP doit-il copier l'en-tête Content-Encoding vers le client?

On dit également que Content-Encoding est un en-tête HTTP de bout en bout, et non un saut par saut.

Par conséquent, si un proxy copié Content-Encoding Retour à l'en-tête de réponse du client, et ce proxy également io.Copy le corps de la réponse en amont (qui peut décompresser automatiquement depuis io.Copy sera lu à partir resp.Body), sera-ce pas incohérent de client? (Content-Encoding copié à partir de la réponse en amont, mais le corps a été décompressé)

Répondre

0

En général, l'en-tête de réponse Content-Encoding ne doit pas être modifié par un proxy.

Différents encodages du même URI sont considérés comme des représentations différentes et ont des ETags différents. Donc, changer le Content-Encoding ne fonctionnerait pas bien avec la mise en cache. Mais si c'est votre propre proxy et client dans votre propre écosystème, vous pouvez le faire, puisque vous savez ce qui se passe, donc si votre proxy est en train de décompresser les données sur le client, vous devrez supprimer le Content-Encoding entête.

+0

Donc, dans 'go', quand j'utilise' io.Copy (rw, resp.Body) ', dois-je copier l'en-tête' Content-Encoding' ou pas? – dastan