Как проверить, работает ли заголовок If-Modified-Since - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть код, который я хотел бы проверить, чтобы убедиться, что он работает правильно.Как я могу проверить, если изменено, так как заголовок работает, как ожидалось?

$headers = getallheaders();
$time = Carbon::createFromTimestamp(filemtime($location), 'Europe/Amsterdam');
$md = md5($time->timestamp);

if(isset($headers['If-Modified-Since'])) {
    $carbon = Carbon::createFromFormat('D, d M Y H:i:s \G\M\T', $headers['If-Modified-Since'], 'Etc/GMT+0');
    if($carbon->gt($time)) { 
        header('HTTP/1.1 304 Not Modified');
        exit;
    }
}
if(isset($headers['If-None-Match']) && !Request::isRefresh() && !Request::isPost() && !Request::isAjax()) {
    $trim = trim($headers['If-None-Match']);
    if(($trim == "\"$md\"" || $trim == "$md" || $trim == "'$md'")) {
        header('HTTP/1.1 304 Not Modified');
        exit;
    }
}
$fp = fopen($location, 'rb');
expireHeader();
header("Etag: $md");
header("Content-Type: ".getMimeType($location));
header("Content-Length: " . filesize($location));

fpassthru($fp);
exit;

1 Ответ

0 голосов
/ 11 декабря 2018

Используя объект XMLHttpRequest в браузере и добавляя свои собственные заголовки, вы можете проверить, правильно ли работает ответ.

xmlhttp=new XMLHttpRequest();
xmlhttp.addEventListener('load', function() {
   console.log(this.status);
});
xmlhttp.open("get", location.href);
xmlhttp.setRequestHeader("If-Modified-Since", "Wed, 16 Mar 2019 13:00:00 GMT");
xmlhttp.send();

Изменяя дату в будущем или в прошлом файла, который выпри тестировании вы получаете либо ответ 200, указывающий, что файл был изменен с указанной даты, либо ответ 304 без изменений.

Конечно, вы можете написать модульный тест, но для практичности и для быстрой проверки, еслиответ - это то, что вам нужно, чтобы это работало нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...