| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Распределённые приложения и сеть > отправка post переменных |
| Автор: nmn 31.7.2010, 02:45 |
| здравствуйте при получении ответа от сервера 302 (редирект) необходимо ли снова отправлять post переменные на новый адрес указанный в Location? |
| Автор: KelTron 31.7.2010, 07:52 |
| Нет, достаточно и GET-а. |
| Автор: Gleb 2.8.2010, 10:12 |
| Зависит от сервера. Например сервер так настроен, что после получения вашего Post'а редиректит вас на другую страницу. Этим он избавляется от проблемы случайной повторной отправки даных по F5 или по каким-то другим своим соображениям. Или ресурс действительно переехал (или редиректит на домен с www). Например в ответ на Post-запрос на домен yandex.ru (data: text=hey&lr=56), я получаю 302 с "Location: http://www.yandex.ru/yandsearch?text=" и если я обращусь Get'ом по этому Location, то что мне выдастся? правильно, совсем не то, что я искал. |
| Автор: Gleb 2.8.2010, 19:58 | ||
Это вы к чему? Да, есть такой параметр у HttpWebRequest, но о нем ли мы говорим? Вообще вы явно не поняли сути вопроса. Поясню: - Клиент отправляет post-запрос на ресурс А - Сервер отвечает: 302 Found, Location=ресурс Б Вопрос: дошли ли данные в post-запросе хоть кому-нибудь? Или заново делать Post ресурсу Б? Эксперименты показали, что, как я уже говорил выше, возможны две ситуации: 1. На ресурсе А запрос дошел до серверного кода, был обработан (данные сохранились в БД к примеру) и послан ответ 302 чтобы пользователь случайно не отправил данные еще раз. 2. На ресурсе А запрос до обработки кодом не дошел, а был обработан например модулем IIS и отредирекчен на ресурс Б. В первом варианте ничего делать не надо, если вы используете HttpWebRequest, то по умолчанию (AllowAutoRedirect = true) в потоке ответа будет ресурс Б. Во втором случае вам нужно заново отправить Post на ресурс Б. |