Perl-скрипт создает страницу загрузки с этим URL
http://server/cgi-bin/oursite/script.pl?action=checkme&username=myname
с заголовками, установленными:
my $q = new CGI;
...
print $q->header(-expires => '+0s');
с кучей ссылок на нем. Вот один из них:
http://server/cgi-bin/oursite/script.pl?username=myname&action=retrieve&rmime=text__plain&rfile=HM_vmK9Ah.status
(Это URL в конструкции filename .)
Если пользователь нажимает на эту ссылку, целевой файл отправляется в браузер с заголовками:
print "Content-type: $RMIME\n";
print "Content-Disposition: inline\n\n";
Далее следует текст этого файла. Это отображается так, как должно. К сожалению, если пользователь затем пытается использовать стрелку назад браузера, это терпит неудачу. Firefox (например), говорит это:
Срок действия документа истек
This document is no longer available.
The requested document is not available in the browser’s cache.
As a security precaution, the browser does not automatically re-request sensitive documents.
Click Try Again to re-request the document from the website.
[Try Again]
Нажатие кнопки «перезагрузить» в браузере или «Повторить попытку» в сообщении, а затем «повторная отправка» возвращает на страницу загрузки.
Если вместо этого заголовки для страницы загрузки создаются:
print "Expires: +0s\n";
print "Content-type: text/html\n\n";
Тогда кнопка «назад» работает как положено.
Я не понимаю, почему поведение отличается в двух случаях, так как кроме отказа кнопки «назад» страницы отображаются одинаково (как text / html). Может кто-нибудь объяснить это?
Смежный вопрос - если браузеру предписано «показать источник страницы» на странице загрузки, созданной с помощью первого метода заголовка, который также вызывает сообщение «Документ истек», а «Повторить попытку» «повторно отправить» показывает URL-адрес верхней страницы, предоставленной сценарием. Однако «показать источник страницы» на верхней странице немедленно показывает его без сообщения «Срок действия документа истек». Если страница была создана с помощью второго метода заголовка, тогда «show source source» действительно показывает источник текущей страницы. Опять же, почему разница?
Спасибо.