Domanda

Ho una pagina PHP di base caricata tramite vernice con un singolo ESI include che richiamate al server per impostare un cookie. Il cookie è impostato con l'accesso al dominio e simili, ma quando viene chiamato attraverso ESI il cookie non è mai impostato. Se si accede direttamente all'ESI include il percorso, il cookie è impostato senza problemi. Ho persino impostato la mia configurazione di vernice per non memorizzare mai nulla, pensando che il VCL potrebbe uccidere il cookie.

Questo...

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

... include questo ...

<?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');

?>

Sono nuovo con Varnish ed ESI, quindi sto iniziando a chiedermi se questa è una limitazione nota (con ESI o con l'implementazione ESI di Varnish), ma non riesco a trovare alcuna discussione sul mio problema online.

È stato utile?

Soluzione

Una domanda interessante a cui è stata posta, ma non ha risposto - prima ( Impostazione dei cookie tramite ESI: include, come? ). Non credo che tu possa farlo in questo modo. Con ESI-Include, il processore ESI fa una richiesta separata e sostituisce una parte dal corpo, non dall'intestazione. Al fine di far funzionare correttamente il comportamento set-cookie preferito, la specifica ESI dovrebbe specificare come "unire" tutte le intestazioni del set-cookie.

Vedere il capitolo sei delle specifiche ESI: http://www.w3.org/tr/esi-lang

Quando viene elaborato un modello ESI, dovrà essere effettuata una richiesta separata per ciascuno di essi inclusi. Le implementazioni possono utilizzare le intestazioni della richiesta originale (ad es. Cookie, utente-agente, ecc.) Quando lo fanno. Inoltre, le intestazioni di risposta dai frammenti (ad es. Set-cookie, server, cache-controllo, ultimo modificato) possono essere ignorate e non dovrebbero influenzare la pagina assemblata.

Potresti provare a convertire l'intestazione del set-cookie in uno script javascript set-cookie? Questo potrebbe essere incluso nel corpo ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top