Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208

HTTP Redirect after async post

04.03.2015, 20:29. Показов 2029. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возможно ли сделать редирект на асинхронный пост запрос указав в ответе код 301 и Location?
Мне нужно редиректить на страницу логина если хитро*опый пользователь вдруг подумает отправлять пост запросы не залогинившись.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.03.2015, 20:29
Ответы с готовыми решениями:

Генерирование POST запроса http
Здравствуйте! Подскажите пожалуйста как быть? В http совсем не силён! Задача стоит так. Есть 3g wi-fi модем huawei e355, который нужно...

Как в web.config на iis прописать Redirect так же как в .htaccess типа: Redirect 301 /thumb http://st.site2.com?
Нужно прописать redirect на IIS в web.config который выполняет то же самое что и строка Redirect 301 /thumb http://st.site2.com в...

Не работает Response.Redirect !: The HTTP headers are already written to the client browser. Any HTTP header modifications must be made before writing
точнее все работает на тестовом сервере (Вин2000), при переносе на рабочий страница с редиректом выдает ошибку - Response object error...

26
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
07.03.2015, 17:40
Цитата Сообщение от animator404 Посмотреть сообщение
Возможно ли сделать редирект на асинхронный пост запрос указав в ответе код 301 и Location?
Да. http://php.net/manual/en/function.header.php

Не по теме:

Интересно только, что означает "асинхронный пост запрос"? оО

0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
07.03.2015, 17:57  [ТС]
pav1uxa, не важно какой запрос, просто написал асинхронный.
К сожалению, не почерпнул из вашей ссылки ничего полезного.

Возможно не очень понятно описал.
Есть страница, на которую мы перешли. Страница отправляет какие-то пост запросы на сервер.
Нужно чтобы на один из таких пост запросов пришел ответ, который бы заставил браузер перейти на другую страницу.

Насколько я понял, если просто поменять Location в хедере, то браузер всего-то выполнит запрос по этому аддресу. А страница останется прежней. Все больше сколняюсь к мысли что это невозможно.
П.С.: на клиенте не должно быть никакой логики о переходе, браузер должен сам понять что нужно перейти на другую страницу.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
07.03.2015, 18:15
Цитата Сообщение от animator404 Посмотреть сообщение
Насколько я понял, если просто поменять Location в хедере, то браузер всего-то выполнит запрос по этому аддресу
Нет, это обычный редирект:
PHP
1
2
header('Location: index.php');
die();
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
07.03.2015, 18:24
Цитата Сообщение от animator404 Посмотреть сообщение
Насколько я понял, если просто поменять Location в хедере, то браузер всего-то выполнит запрос по этому аддресу
Что значит "выполнит запрос по этому адресу"? Где Вы понабрались таких несуществующих понятий?

После получения HTTP-заголовка Location, браузер не будет отображать никакой информации, а просто перейдет по адресу указанному в нем... Неужели так тяжело проверить самому.
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
07.03.2015, 18:30  [ТС]
Jodah, это редирект самого пост запроса. Это никак не вызовет смену контента в окне браузера.
Просто тот запрос который отправился, отправится еще по другому адресу и придет какой-то ответ - новая страница, но она придет как ответ на пост запрос.

Добавлено через 4 минуты
pav1uxa, да не сработает это. Как вы не можете понять?!
Только если на клиенте будет логика, которая и перезагрузит страницу.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
07.03.2015, 18:34
animator404, ничего не понял. Какой ещё другой адрес?

Вы написали, что нужно неавторизованных пользователей, посылающих пост-запросы, редиректить на страницу логина. Это делается с помощью функции header() по приведённому выше примеру. Если у вас есть ещё какие-то условия, опишите их подробней.

Цитата Сообщение от animator404 Посмотреть сообщение
да не сработает это. Как вы не можете понять?!
Почему нет?
Пользователь нажимает на кнопку "Отправить", ему в ответ приходит редирект, пользователь автоматически редиректится.

Или под клиентом вы понимаете не браузер, а что-то другое?
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
07.03.2015, 18:45  [ТС]
Jodah, все - забыли об аутентификации.

Еще раз.
Есть страница, на которую мы перешли. Страница отправляет пост запрос на сервер по адресу /weatherToday.
Сервер говорит что у него нет данных в виде xml или json, но зато есть уже готовая страница с такими данными и отправляет назад клиенту "302 Found, Location: /weatherToday.html".

Вопрос. Как это может заставить браузер загрузить в окне новую страницу - "/weatherToday.html"?
Ведь когда браузер получит "302 Found, Location: /weatherToday.html" он всего-то сделат тот же пост запрос на /weatherToday.html вместо /weatherToday

Добавлено через 3 минуты
Цитата Сообщение от Jodah Посмотреть сообщение
Или под клиентом вы понимаете не браузер, а что-то другое?
браузер
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
07.03.2015, 18:50
Цитата Сообщение от animator404 Посмотреть сообщение
Как это может заставить браузер загрузить в окне новую страницу
Цитата Сообщение от animator404 Посмотреть сообщение
сделат тот же пост запрос на /weatherToday.html
А в чём разница? Да, сервер сделает запрос к новой странице, получит её и выведет в браузер. Не понимаю задачу.
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
07.03.2015, 18:54  [ТС]
Jodah,

Добавлено через 51 секунду
Цитата Сообщение от Jodah Посмотреть сообщение
Да, сервер сделает запрос к новой странице, получит её и выведет в браузер
я этого не говорил. Я как раз и акцентирую на том, что этого не произойдет.

Добавлено через 1 минуту
но вопрос этого сабжа и заключается в том как это сделать. И я уже понял что никак без добавления логики на клиенте.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
07.03.2015, 18:58
Цитата Сообщение от animator404 Посмотреть сообщение
я этого не говорил. Я как раз и акцентирую на том, что этого не произойдет.
Ну как же не произойдёт... Пользователь тыкает кнопку, на сервер отправляется запрос, запрос отвечает редиректом, браузер автоматически перекидывает пользователя на новую страницу уже с помощью GET.

Если бы этот редирект не работал, его бы никто и не советовал.
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
07.03.2015, 18:59  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
уже с помощью GET
почему уже с гет?
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
07.03.2015, 19:00
Цитата Сообщение от animator404 Посмотреть сообщение
но вопрос этого сабжа и заключается в том как это сделать. И я уже понял что никак без добавления логики на клиенте.
Хорошо, приведите пример, как вы хотите решить свою задачу на клиенте. Так?
JavaScript
1
document.location.href = 'http://site.ru';
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
07.03.2015, 19:01  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
уже с помощью GET
почему уже с гет?Jodah, да. по другому страницу не перезагрузить
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
07.03.2015, 19:04
Цитата Сообщение от animator404 Посмотреть сообщение
почему уже с гет?
Потому что сервер не перенаправляет уже сделанный к нему запрос. Он этот запрос обрабатывает и возвращает результат - редирект. Сам переход на новую страницу браузером по редиректу - это уже новый запрос, не имеющий никакого отношения к старому.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
07.03.2015, 19:08
Цитата Сообщение от animator404 Посмотреть сообщение
pav1uxa, да не сработает это. Как вы не можете понять?!
Только если на клиенте будет логика, которая и перезагрузит страницу.
о господи, а что мешает менять логику со стороны сервера? Вы сами выбираете что отображать своему клиенту...
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
07.03.2015, 19:11  [ТС]
Jodah, именно.
С чего браузеру знать что нужно делать уже гет а не сет.
Но даже если гет - это никак не обновит страницу.

Во время загрузки страницы браузер делает много гетов - код, стили, картинки, но он их делает в рамках одного окна. С чего вы взяли именно на этот гет он возьмет и перегрузит страницу.

Добавлено через 1 минуту
Цитата Сообщение от pav1uxa Посмотреть сообщение
Вы сами выбираете что отображать своему клиенту...
вопрос как раз и стоит в том как заставить браузер перезагрузить страницу.
Если бы пользователь ввел в адресной строке страницу, бразуер сделал редирект то вопросов нет.
а так - делается запрос в рамках страницы - когда она уже загружена и не гет а пост
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
07.03.2015, 19:23
Цитата Сообщение от animator404 Посмотреть сообщение
С чего браузеру знать что нужно делать уже гет а не сет.
Что такое сет? Вы имели ввиду пост?
С того, что обычный запрос на страницу всегда осуществляется методом GET. Когда вы пишете в адресной строке google.ru - браузер знает, каким методом посылать этот запрос.

Цитата Сообщение от animator404 Посмотреть сообщение
Во время загрузки страницы браузер делает много гетов - код, стили, картинки, но он их делает в рамках одного окна.
Причём здесь окно? При запросе к картинке или CSS файлу можно тоже отправить заголовок с редиректом. И тогда этот файл загрузится из другого места, на которое был указан редирект.

Цитата Сообщение от animator404 Посмотреть сообщение
С чего вы взяли именно на этот гет он возьмет и перегрузит страницу.
С того, что читал руководство и использовал в своих проектах, и всегда всё работает как часы. Технология работает именно так, вне зависимости от наших с вами о ней представлений.
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
07.03.2015, 19:28  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Что такое сет? Вы имели ввиду пост?
да

Цитата Сообщение от Jodah Посмотреть сообщение
Когда вы пишете в адресной строке google.ru - браузер знает, каким методом посылать этот запрос.
если введено в адресной строке то да - браузер сделает гет.
.ru или .html в конце абсолютно не дает браузеру знаний что нужно отправлять гет.

Цитата Сообщение от Jodah Посмотреть сообщение
Причём здесь окно? При запросе к картинке или CSS файлу можно тоже отправить заголовок с редиректом. И тогда этот файл загрузится из другого места, на которое был указан редирект.
да - это так. но с чего браузеру знать что после редиркта ресурс с именем .html в конце нужно отобразить в текущем окне?

Цитата Сообщение от Jodah Посмотреть сообщение
С того, что читал руководство и использовал в своих проектах, и всегда всё работает как часы. Технология работает именно так, вне зависимости от наших с вами о ней представлений.
почему-то я вам не верю
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
07.03.2015, 19:47
Цитата Сообщение от animator404 Посмотреть сообщение
.ru или .html в конце абсолютно не дает браузеру знаний что нужно отправлять гет.
А причём здесь конец? Браузер всегда отправляет запросы методом GET, кроме тех случаев, когда явно указан POST (в форме или аяксе).

Цитата Сообщение от animator404 Посмотреть сообщение
да - это так. но с чего браузеру знать что после редиркта ресурс с именем .html в конце нужно отобразить в текущем окне?
html не имеет никакой роли. В случае чпу расширение вообще не используется (site.ru/products/car-53).

Я не знаю, каким образом браузер понимает, к какой вкладке какой запрос относится. У меня нет исходного кода IE и Хрома, и даже если бы был, вряд ли я бы в нём разобрался. Но эта технология есть, иначе вы бы не могли банально переходить по ссылкам на сайте, всегда для отдельной ссылки открывалась бы новая вкладка.
Цитата Сообщение от animator404 Посмотреть сообщение
почему-то я вам не верю
А я и не предлагаю мне верить. Мы кучу времени спорим о том, что можно проверить за 5 минут.

Добавлено через 5 минут
В общем, предлагаю вам самому проверить, как на самом деле работают редиректы через функцию header(). Если окажется, что всё происходит именно так, как написали вы (с редиректами запросов) - можете назвать меня дураком и смело делать редиректы на JS.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.03.2015, 19:47
Помогаю со студенческими работами здесь

POST запрос и redirect
Доброго времени суток господа . Пишу софт для автоизации и выполнения n-ных действий на сайте (youtube). Авторизацию реализовал , но вот с...

Async Task парсинг Http с использованием AngleSharp
Прошу совета, помощи. Запрос http: public static async Task<string> GetHttp(string requestUri) { using...

Redirect с параметром, методом POST
Делаю Redirect с параметром ,по умолчанию испоьзуется метод GET и все параметры видны в адресе. А как можно сделать метод POST, что бы не...

Express: AJAX POST - redirect - GET. Не работает
Добрый день Как делать правильно перенаправление с помощью AJAX POST + express вместо использования submit-кнопки? Вот мой...

http server,http сервер, post
Необходимо реализовать функцию post для http сервера Косяк как принимать сообщение отправленное - вот этой формой и сам сервер При...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru