Задать вопрос

Confirm Form Resubmission после POST-запроса в Google Chrome

Как известно, после POST-формы желательно сделать редирект для защиты от повторной отправки данных.
Вот только в хроме (версии 25 и 26) это почему-то не работает, странно что раньше я такого не наблюдал, видимо сломали недавно, или я хз…

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    //setcookie('post', 1, time()+604800);
    header('Location: '.$_SERVER['REQUEST_URI'], true, 301);
}
//elseif (isset($_COOKIE['post'])) {
//    setcookie('post', '', time()-604800);
//    header('Location: '.$_SERVER['REQUEST_URI'], true, 303);
//}
?>
<form name="form" id="form" method="post" action="<?=$_SERVER['REQUEST_URI']?>">
<input type="submit" id="submit" name="submit" value="Submit" />
</form>

При обновлении страницы он всё-равно пытается отправить POST, даже если сделать второй редирект (то что закомменчено).

В других браузерах всё чётко (FF, Opera, IE8-9)

UPD нашёл подробности тут, бага только с последней версии:
code.google.com/p/chromium/issues/detail?id=177855
  • Вопрос задан
  • 4501 просмотр
Подписаться 4 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Skillbox
    PHP-разработчик. Базовый уровень
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 2
@egorinsk
Прежде чем обвинять Хром в «неправильном» поведении, стоит посмотреть в RFC, а как должны себя вести браузеры в такой ситуации:

www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2

> Note: When automatically redirecting a POST request after receiving a 301 status code, some existing HTTP/1.0 user agents will erroneously change it into a GET request.

Полчуается, такое поведение соответствует стандарту HTTP. Неудивительно, ведь Хром разрабатывают (в отличие от конкурирующих браузеров) лучшие в мире программисты.
Ответ написан
hell0w0rd
@hell0w0rd
Просто разработчик
Странно, действительно не работает. Правда вполне нормально работают редиректы на страницы, отличные от той, на которую отправлена форма
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы