Страницы

Поиск по вопросам

четверг, 26 декабря 2019 г.

Как сделать редирект так, чтобы он работал в Google Chrome?

#редирект #php #javascript


Версия Google Chrome - 25.0.1364.172 m
Принцип работы такой:

Пользователь посещает страницу (скрипт №1)
Он выполняется
После этого отправляется заголовок (редирект на скрипт №2)
Скрипт №2 принимает эстафету
Выполняется
Возвращает эстафету скрипту №1 и скрипт №1 показывает результат

Проблема в защите браузера. Если я делаю заголовками, возникает ошибка 310. А если
пытаюсь закончить работу скрипта №2 выводом в браузер редиректирующего javascript кода
или мета-тега refresh, браузер просто зацикливается обновляя страницу (скрипт №2),
даже если указано, что переадресовывать нужно на другой поддомен, не говоря уже о другой
директории этого же домена. Переадресовывает только если домен назначения совсем другой.
У кого-нибудь есть мысли в чём может быть причина такого странного поведения браузера?
И что делать? Нужно чтобы такой принцип эстафеты работал во всех браузерах.
UPD
Зачем тут код, если вопрос не про код? Ну да ладно. Код примерно такой:
script1.php


script2.php


Только весь смысл в том, что в первом скрипте сначала идёт условие, и если оно не
выполняется, то тогда идёт обращение ко второму скрипту, который заносит в базу данных
необходимые данные и когда второй скрипт доделывает свои дела, должен повторяться запрос
к первому скрипту, в котором условие уже будет выполняться (благодаря проделанной работе
второго скрипта) и соответственно первый скрипт уже не будет обращаться ко второму
скрипту и будет производить совсем другие действия не связанные с редиректами.
UPD2
script1.php


script2.php


Простой пример с сессионной переменной. Ну уж теперь-то все поняли логику? :))) Я
понимаю, что можно всё в одном скрипте сделать и это будет прекрасно работать, но мне
интересно, можно ли как-нибудь распределить обязанности на разные скрипты, чтобы они
работали по принципу передачи эстефетной палочки, ну или как бы играли в "сифу" до
определённого момента. :) Я не знаю уже как мальчикам объяснить то, чего я хочу добиться
от Google ChromА. :)))))
UPD 3
То что я привела в пример - я не тестировала и это работает да, но почему-то, когда
работают два настоящих больших скрипта, происходят глюки или ошибки описанные выше
и причём только в Google Chrome, хотя в скриптах нет ничего особенного и в общем смысле
они логически сложены так же как мой пример с сессиями, только скрипты работают с базой
данных и не передают друг другу ничего, а просто первый говорит второму - "у меня нет
данных, поработай-ка и ты". Код прикладывать не буду, потому что мне совесть не позволит
просить кого-нибудь в нём разобраться. :)))
Простите за "охоту за приведениями". :) Всем большое спасибо, особенно @eicto и моему
другу @ReinRaus. :)))    


Ответы

Ответ 1



Используйте Ajax для этого: сделайте логику запроса нужных скриптов на клиенте и проблема отпадет сама собой, т.к. редирект будет не нужен. Использовать редиректы "туда-обратно" - антипаттерн, который явно фильтруется браузерами.

Комментариев нет:

Отправить комментарий