WAP/WML: правильный redirect после отправки формы POST'ом?

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
WAP/WML: правильный redirect после отправки формы POST'ом?

Форма с WML-страницы отправляется POST'ом, после чего по старой привычке делается
PHP:
header('Location: another-page');
Проблема: некоторые клиенты (например телефоны Samsung и соответствующий эмулятор) при получении статуса 302 переходят на another-page тем же методом POST. Это в принципе не противоречит протоколу HTTP, но эти же клиенты (как минимум эмулятор) не понимают статуса 303.

Поиск мало что дал, узнал только что вражеская платформа ASP.NET для переброса на другую страницу имеет специальный метод RedirectToMobilePage.

Так вот: хотелось бы знать, как гарантированно перебросить на другую страницу методом GET? И / или какой набор заголовков / текста вываливает WAP-браузеру вражеский метод?
 

Raziel[SD]

untitled00
Sad Spirit
На каких именно телефонах Samsung ? на 410 самсунге все работает, но там браузер от Access.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Raziel[SD]
На каких именно телефонах Samsung ? на 410 самсунге все работает, но там браузер от Access.
Конкретно проверялось моделью E720.

Ну так как правильно делать redirect? Я пока сделал через карту с таймером, работает везде, но карта на экране появляется.
 

neko

tеam neko
а в чем проблема взять эту нерабочую модель и зайти на сайт работающий с этим вот приемом от asp.net?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: neko
а в чем проблема взять эту нерабочую модель и зайти на сайт работающий с этим вот приемом от asp.net?
А в чём проблема дать мне конкретную ссылку, на которую нужно зайти?
 

[DAN]

Старожил PHPClub
может через <meta http-equiv="refresh" ... /> метод GET сработает?
 

Raziel[SD]

untitled00
Судя по той информации, которую я нашел в e720 должен быть браузер NetFront2(От Access), в NetFrontPlus все работает, а NetFront 2найти не могу, но я NetFront 2 смотрел примерно полгода назад - редирект работал правильно.

а ты ссылку пишешь абсолютную(http://www.example.com) или относительную(../page.php) ? может это имеет значение.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: [DAN]
может через <meta http-equiv="refresh" ... /> метод GET сработает?
Собственно примерно такая шняга у меня и делается, только с использованием <timer>

Автор оригинала: Raziel[SD]
Судя по той информации, которую я нашел в e720 должен быть браузер NetFront2(От Access), в NetFrontPlus все работает, а NetFront 2найти не могу, но я NetFront 2 смотрел примерно полгода назад - редирект работал правильно.

а ты ссылку пишешь абсолютную(http://www.example.com) или относительную(../page.php) ? может это имеет значение.
В общем ещё раз: в объективной реальности есть дивайсы и эмуляторы (эмулятор M3Gate и дивайс Samsung e720), которые в ответ на 302 делают переход методом POST. Тебе будет достаточно трудно меня убедить, что они мне приглючились.

Может и фазы Луны имеют значения, но URL'ы я пробовал обоих типов.

Всё в том же вражеском ASP.NET сообщение об ошибке весьма очевидное и понятное:
Calling Response.Redirect on a postback can have unpredictable results on mobile devices and gateways. Use MobilePage.RedirectToMobilePage method instead.
Ну чё, у кого-нибудь есть ASP.NET посмотреть? Или так и будем в бесполезную угадайку играть?
 

Breeze

goshogun
Команда форума
Партнер клуба
выложить в мир могу, если есть работающий скрипт..

-~{}~ 29.03.06 15:00:

накатал скриптец, который использует этот метод:

http://www.owg.ru/mkt/redir.aspx
 

Breeze

goshogun
Команда форума
Партнер клуба
А ты часом не ТТ мобильным-эмулятором пользуешься? он действительно так выдает, не знаю почему.. .НЕТ не моя стихия :)
у меня в Firefox все отрабатывает
заголовки на всякий случай:

POST /redir.aspx?__ufps=357211 HTTP/1.1

Host: www.owg.ru

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1

Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Referer: http://www.owg.ru/mkt/redir.aspx

Cookie: ASP.NET_SessionId=1owmbjiyw0un013jhfhewz45; ASPSESSIONIDCQACDTBA=LDKKNDHBIIMGFHKKKDHHBJBE

Content-Type: application/x-www-form-urlencoded

Content-Length: 120

__VIEWSTATE=aDxfX1A7QDw76rG21Zrjrpngo4ksMDs%2BOz6fNWTyohrPYa14rU4QKshnk329Cg%3D%3D&__EVENTTARGET=_ctl2&__EVENTARGUMENT=2


HTTP/1.x 302 Found

Via: 1.1 EOS

Content-Length: 148

Date: Wed, 29 Mar 2006 08:01:38 GMT

Location: http://www.phpclub.ru?__redir=1

Content-Type: text/html; charset=windows-1251

Server: Microsoft-IIS/5.0

X-Powered-By: ASP.NET

X-AspNet-Version: 1.1.4322

Cache-Control: private
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Breeze
А ты часом не ТТ мобильным-эмулятором пользуешься? он действительно так выдает, не знаю почему.. .НЕТ не моя стихия :)
у меня в Firefox все отрабатывает
Да, я заходил эмулятором Openwave.

В Mozilla у меня тоже всё отрабатывает, но она получает страницу в HTML, а не WML. А проблема как раз с дивайсами, заточенными под WML. :(
 

Breeze

goshogun
Команда форума
Партнер клуба
Обновил файло.. Там с сессиями какая-то хрень была.
Через Openwave в Siemens S65 заработало, хотя не исключено что снова html-генерится.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Breeze
Обновил файло.. Там с сессиями какая-то хрень была.
Через Openwave в Siemens S65 заработало, хотя не исключено что снова html-генерится.
Гм... Теперь работает, но отдаётся обычный заголовок 302 с HTML в теле ответа.

Ладно, в кач-ве рабочей гипотезы принимаем, что вышеуказанный метод ASP.NET определяет, что именно нужно отдавать, по полю User-Agent. Поэтому забиваю на это дело болт: вытащить из него базу User-Agent будет проблематично, а решение с <timer> работает на всех дивайсах и эмуляторах, которые в наличии имеются, хотя и не очень эстетично.

Breeze, большое спасибо за помощь. :)
 
Сверху