Frage

Ich habe eine grundlegende PHP -Seite, die durch Lack mit einem einzigen ESI enthalten ist, das zum Server zurückgezeigt wird, um ein Cookie festzulegen. Der Cookie ist mit Domain -Zugriff und dergleichen eingestellt, aber wenn er durch ESI gerufen wird, wird der Cookie nie eingestellt. Wenn Sie direkt auf die ESI -Include -Pfad zugreifen, ist das Cookie ohne Probleme festgelegt. Ich habe sogar meine Lackkonfiguration so eingestellt, dass sie nie etwas zwischenspeichert, und dachte, die VCL könnte den Cookie töten.

Dies...

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

... beinhaltet das ...

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

?>

Ich bin neu mit Lack und ESI, also frage ich mich, ob dies eine bekannte Einschränkung ist (entweder mit ESI oder mit der ESI -Implementierung von Lack), aber ich kann keine Online -Diskussion über mein Problem finden.

War es hilfreich?

Lösung

Eine interessante Frage, die gestellt wurde - aber nicht beantwortet - vorher ( Kekse über ESI einstellen: Wie? ). Ich glaube nicht, dass Sie es so machen können. Mit ESI-include stellt der ESI-Prozessor eine separate Anfrage und ersetzt ein Teil aus dem Körper, nicht aus dem Kopfzeile. Um Ihr bevorzugtes Verhalten des Set-Cookie korrekt funktionieren zu können, sollte die ESI-Spezifikation festlegen, wie alle Set-Cookie-Header "zusammengeführt" werden sollen.

Siehe Kapitel 6 der ESI -Spezifikation: http://www.w3.org/tr/esi-lang

Wenn eine ESI -Vorlage verarbeitet wird, muss eine separate Anforderung für jede Einbeziehung gestellt werden. Implementierungen können dabei die Header (z. B. Cookie, Benutzeragent usw.) verwenden. Darüber hinaus können Antwortheader aus Fragmenten (z. B. Set-Cookie, Server, Cache-Control, Last-modifiziert) ignoriert werden und sollten die zusammengestellte Seite nicht beeinflussen.

Könnten Sie versuchen, Ihren Set-Cookie-Header in einem JavaScript-Set-Cookie-Skript umzuwandeln? Dies könnte im Körper enthalten sein ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top