Перенаправление к новой странице w/данные POST (PHP/Zend)

Согласно [1 115] RFC 1738 :

Небезопасный:

Символы могут быть небезопасными по ряду причин. пробел небезопасен, потому что значительные пробелы могут исчезнуть, и незначительные пробелы могут быть представлены, когда URL записываются или набираются или подвергаются обработке программ обработки текстов. символы "<" и ">" небезопасны, потому что они используются в качестве разделителей вокруг URL в произвольном тексте; метка кавычки (""") используется для разграничивания URL в некоторых системах. Символ "#" небезопасен и должен всегда кодироваться, потому что он используется во Всемирной паутине и в других системах для разграничивания URL от идентификатора фрагмента/привязки, который мог бы следовать за ним. Символ "%" небезопасен, потому что он используется для кодировки других символов. Другие символы небезопасны, потому что шлюзы и другие транспортные агенты, как известно, иногда изменяют такие символы. Эти символы "{", "}", "|", "\", "^", "~", "[", "]", и "`".

Все небезопасные символы должны всегда кодироваться в URL. Например, символ "#" должен быть закодирован в URL даже в системах, которые обычно не имеют дело с фрагментом или идентификаторами привязки, так, чтобы, если URL копируется в другую систему, которая использует их, не было необходимо изменить кодирование URL.

17
задан Charles 5 April 2011 в 17:15
поделиться

4 ответа

Вместо того, чтобы перенаправлять браузер в новое место, почему бы просто не перенаправить запрос от контроллера к другому контроллеру?

return $this->_forward("action", "controller", "module");
16
ответ дан 30 November 2019 в 11:44
поделиться

Поскольку клиент обрабатывает перенаправление после ответа сервера, я не думаю, что вы можете что-то с этим поделать. Firefox, например, спрашивает пользователя, хочет ли он повторно отправить данные POST в новое место или нет.

Неприятным решением было бы заполнить и вернуть HTML-форму и автоматически отправить ее с помощью JavaScript. : /

0
ответ дан 30 November 2019 в 11:44
поделиться

Я не слишком хорошо знаком с Zend, но есть два подхода к решению вашей проблемы:

  1. Хранить данные POST в сеансе в течение всего срока действия этого запроса / перенаправления.
  2. Установить перенаправление как POST и кодировать данные. Вместо использования перенаправления просто отправьте новый заголовок с помощью POST вместо GET.
0
ответ дан 30 November 2019 в 11:44
поделиться

IMO, вы не можете выполнить перенаправление с помощью POST. См. http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3

Как уже было сказано, вы можете сохранить свои POST-данные в сеансе.

13
ответ дан 30 November 2019 в 11:44
поделиться
Другие вопросы по тегам:

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