Question

J'ai une page PHP de base en cours de chargement par Varnish avec un seul ESI comprennent que les appels au serveur de définir un cookie. Le cookie est un accès de domaine, etc., mais lorsqu'il est appelé par ESI le cookie est jamais mis. Si vous accédez au ESI include_path directement, le cookie est sans problème. Je tournerai ma configuration Varnish de ne jamais rien cache, pensant que la VCL pourrait être en train de tuer le cookie.

...

<esi:include src="/init.php?<?=http_build_query($_GET); ?>"></esi:include>

... comprend ce ...

<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

setcookie('superman', 'clark kent', 0, '/', '.whatever.com');

?>

Je suis nouveau avec Varnish et ESI, donc je commence à me demander si cela est une limitation connue (soit avec ESI ou avec la mise en œuvre ESI de Varnish), mais je ne peux trouver aucune discussion de mon problème en ligne.

Était-ce utile?

La solution

Une question intéressante qui a été posée -mais pas avant répondit: ( Définition de cookies via ESI: inclure, comment? ). Je ne pense pas que vous pouvez le faire de cette façon. Avec ESI comprennent, le processeur ESI fait une demande distincte et remplace une partie du corps, et non pas l'en-tête. Afin de rendre votre travail de comportement ensemble cookie préféré correctement, la spécification ESI doit préciser comment « fusionner » tous les en-têtes Set-Cookie.

Voir le chapitre six de la spécification ESI: http://www.w3.org/TR / esi-lang

Quand un modèle ESI est traité, un demande distincte devra être faite pour chaque rencontre comprennent. Peuvent utiliser l'Implémentations d'origine Les en-têtes de demande (par exemple, biscuits, User-Agent, etc.) en le faisant. En outre, têtes de réponse de fragments (par exemple, Set-Cookie, Server, Cache-Control, dernière mise à jour) peut être ignoré, et ne devrait pas influencer le page assemblée.

Pouvez-vous essayer de convertir votre tête set-cookie dans un script javascript set-cookie? Cela pourrait être inclus dans le corps ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top