Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |
а я не очень понимаю, как это после отправки хедера... 21.08.04 01:15 Число просмотров: 1825
Автор: tdes@ Статус: Незарегистрированный пользователь
|
|
а я не очень понимаю, как это после отправки хедера Location, то есть после серверного редиректа и изменения метода загрузки на GET, появляется харрактерное только методу POST предупреждение о повторном сабмите формы ???
|
|
<web building>
|
Обновление страницы после отправки формы 21.08.04 00:32
Автор: Heller <Heller> Статус: Elderman
|
Проблема такая: у меня на сервере достаточно большой поток комментариев и обычно пользователь сразу после отправки сообщения жмёт кнопку "Обновить" дабы посмотреть что там ещё кто написал. Что-то вроде чата получается. Но, браузер выводит пользователю вопрос "Повторить отправку формы?" и это не хорошо. Что бы с этим бороться, я в выводимой CGI странице прописываю <body onload='javascript:location.href="URI";'>. Рефреш тут не поможет, так как опять же будет вопрос об отправке формы. Однако у моего способа есть серьёзный недостаток - кнопка назад не работает, а она при моей организации сайта очень нужна (на главной лежат все новые поступления, а зажать shift для просмотра не все умеют). Да и тормозит такой способ - браузер разрывает соединение и для обновления страницы после поста посылает запрос ещё раз.
По совету dl использовал HTTP-заголовок "Location", но это тоже не помогло. На уровне протокола всё проходит как надо - как появляется директива "Location" браузер GET'ом запрашивает требуемую страницу, однако при нажатии на "Обновить" опять вылезает вопрос. В общем случае указанный способ работает, но не у меня, так как сама организация скрипта достаточно мудрёная. А именно:
Сам скрипт называется index.cgi и в .htaccess фигурирует в DirectoryIndex. Адрес до какой-то конкретной статьи выглядит как .../?n, где n - некоторое число. Скрипт if'ом разделён на две части - для запросов GET и POST. В случае GET он просто выводит страницу со статьёй, в которой имеется форма отправки комментария, у которой "ACTION=#". Менять ACTION я не могу опять же из-за идиотской организации - форма выводится не из CGI, а из файла со статьёй (комментарии дописываются в конец файла после формы). Таким образом, браузер отправляет комментарий по адресу .../?n#, а решетка игнорируется (единственный положительный момент во всей истории). В случае POST выводится то что я уже описывал - рефреш.
Вот, в общем-то, и всё. Менять организацию сервера мне нельзя - слишком много контента накопилось, так что придётся как-то плясать от того что есть. Сам, конечно, понимаю, что понаставил себе граблей - но что делать. Не думал что сайт быстро станет известным. Надеялся, что до его плотного заселения пользователями успею сделать всё по-нормальному. Блин.
Заранее благодарен.
|
 |
А какой Location ты используешь - 301 или 302? 21.08.04 02:44
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
|
|
|
 |  |
Фуф, заработало. Спасибо. Заработало как с 301, так и с 302 - просто до этого я их жёстко не прописывал, а оказалось что надо. 21.08.04 13:14
Автор: Heller <Heller> Статус: Elderman
|
|
|
 |
а я не очень понимаю, как это после отправки хедера... 21.08.04 01:15
Автор: tdes@ Статус: Незарегистрированный пользователь
|
|
а я не очень понимаю, как это после отправки хедера Location, то есть после серверного редиректа и изменения метода загрузки на GET, появляется харрактерное только методу POST предупреждение о повторном сабмите формы ???
|
 |  |
Я не уверен что поведение юзер-агента при нажатии кнопки... 21.08.04 02:18
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
|
> а я не очень понимаю, как это после отправки хедера > Location, то есть после серверного редиректа и изменения > метода загрузки на GET, появляется харрактерное только > методу POST предупреждение о повторном сабмите формы ???
Я не уверен что поведение юзер-агента при нажатии кнопки "Refresh" документировано в RFC
|
 |  |
[upd] ссылка inside 21.08.04 01:29
Автор: Heller <Heller> Статус: Elderman Отредактировано 21.08.04 01:54 Количество правок: 1
|
Да я и сам-то не очень понимаю, почему так происходит. Видимо, тараканы IE (у меня стоит 6.0 - я его не обновляю)
Ссылка на скрипт с Location: http://heller.ru/authors/test2/?1
Если интересно посмотреть как это реализовано на данный момент - то можно открыть любую страницу сайта. Ссылка которую только что привёл глючит жутко (выводит ошибки JavaScript) - сваял на скорую руку, просто что бы показать суть проблемы.
Сразу предупреждаю, что на сайте обилие нецензурной лексики (в том числе и по ссылке). Но, в конце концов, сайты разные нужны.. {скромно потупив взгляд и краснея}
-------------------------
[upd]
Кстати говоря, пустые комментарии не принимаюся. Это на тот случай, если мало ли :-)
И ещё было бы интересно узнать - на всех ли браузерах имеется такая проблема или только на IE.
|
|
|