webew
Войти » Регистрация
 
PHP
Протоколы :: HTTP

Как вместе с редиректом отправить POST-запрос?

29 ноября 2011, 11:57
Автор: 1234ru
Возника задача с помощью веб-сервера перенаправить пользователя на некоторую страницу, отправив при этом туда данные в POST (т.е. имитировать отправку POST-формы, и чтоб пользователь увидел у себя в браузере результат).

Как бы это сделать? (на PHP, например)
Добавить комментарий
Отображение комментариев: Древовидное | Плоское
NO USERPIC

rgbeast

HTTP-редирект (302) такого не разрешает. Можно попробовать создать на javascript скрытую форму и сделать submit
document.forms["myform"].submit();
29.11.2011, 17:04
Ответить

1234ru

Цитата:
HTTP-редирект (302) такого не разрешает.

Понятно.
Это как-то странно.. GET-запрос можно послать, а POST - нельзя. Почему такая дискриминация?
То, что не убивает нас, делает нас инвалидами.
29.11.2011, 18:34
Ответить
NO USERPIC

rgbeast

На этом основана юзабилити стандарта HTTP. Пользователь должен понимать что происходит, поэтому стандарт запрещает неявное превращения GET в POST.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3

Цитата:
If the 302 status code is received in response to a request other than GET or HEAD, the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued.


Цитата:
Note: RFC 1945 and RFC 2068 specify that the client is not allowed to change the method on the redirected request.
29.11.2011, 20:39
Ответить

1234ru

Понятно..
С другой стороны, браузер в произвольный момент времени может без участия пользователя сформировать совершенно любой POST-запрос и отправить его куда угодно вместе с перенаправлением на эту страницу (собственно, так я и обошел вышеуказанное ограничение - создал на странице форму, добавил нужные поля и вызвал событие submit()).
Согласуется ли такая ситуация со стандартом?
То, что не убивает нас, делает нас инвалидами.
24.12.2011, 17:42
Ответить
NO USERPIC

rgbeast

Не противоречит. В данном случае Javascript вызывает HTTP запрос, а про него в стандарте ничего не сказано.
24.12.2011, 18:09
Ответить
© 2008—2017 webew.ru, связаться: x собака webew.ru
Сайт использует Flede и соответствует стандартам WAI-WCAG 1.0 на уровне A.
Rambler's Top100

Реклама: