Question

im mal à configurer l'ETAG sur le navigateur d'un utilisateur fiable. Lorsqu'un utilisateur clique sur un de mes liens externes, je voudrais définir l'identifiant de l'article dans leur Etag (j'utilise les cookies aussi, mais id comme à expérimenter avec Etag spécifiquement pour tester sa fiabilité).

Lorsque les mêmes utilisateur retourne à mon site quelques heures / jours plus tard, je voudrais être en mesure de lire la valeur Etag et de l'utiliser pour des trucs.

je peux mettre un eTag sur le clic initial, mais lorsque l'utilisateur retourne la valeur Etag est révolu. Je suppose que son arrivé à expiration ou quelque chose. Voici le code que j'ai essayé:

<?

$time = 1280951171;
$lastmod = gmdate('D, d M Y H:i:s \G\M\T', $time);
$etag = '123';


$ifmod = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] == $lastmod : null; 
$iftag = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? $_SERVER['HTTP_IF_NONE_MATCH'] == $etag : null; 

if (($ifmod || $iftag) && ($ifmod !== false && $iftag !== false)) { 
    header('HTTP/1.0 304 Not Modified'); 
} else {
    header("Last-Modified: $lastmod"); 
    header("ETag: $etag");
}

print_r($_SERVER);

?>
Était-ce utile?

La solution

Vous devriez être emballer vos ETAG guillemets (comme le lien Codler mentionné montre):

'"' . $etag . '"'

Je ne pense pas qu'il est susceptible de résoudre votre problème, mais vous voulez probablement

header('Not Modified',true,304);

au lieu de

header('HTTP/1.0 304 Not Modified');

PHP 5.4 il y a une meilleure façon de le faire avec http_response_code :

http_response_code(304);

Aussi, avez-vous vérifié pour les suspects habituels d'arrêt en-têtes? Unicode marqueurs octet de poids sont très ennuyeux avec cela. (Mépris si vous pouvez voir d'autres têtes que vous définissez vous-même)

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