Подтвердить что ты не робот

Почему $.post() подчиняется политике одного и того же происхождения, но представляет форму с методом = "POST" в порядке?

Я работаю над веб-инструментом, который упрощает работу, которую мы делаем в моем офисе. Инструменты, предоставленные нам нашим партнером, имеют общий логин, который использует весь наш пол, но он разыгрывается каждые 30 минут, что вызывает раздражение, чтобы снова войти в систему весь день.

То, что я делал в прошлом, создавал скрытый iframe внутри моего инструмента, который регистрируется в нем, отправляя скрытую форму на загрузку страницы и продолжая отправлять форму каждые 30 минут, чтобы предотвратить таймаут. Затем они могут отправлять поисковые запросы в инструмент партнера непосредственно из моего инструмента (через другую видимую форму).

Я хотел бы использовать jQuery $.post() для того, чтобы избавиться от скрытого iframe и сделать так, чтобы единственный раз, когда он отправил информацию для входа, - это когда выполняется поиск. Таким образом, он не постоянно отправляет запросы, когда они не используются, но вы все равно можете запустить поиск, не беспокоясь о времени выхода из системы.

Казалось бы, одна и та же политика происхождения ajax предотвращает это, поэтому на данный момент я просто открываю новое именованное окно и затем представляю две скрытые формы в целевом окне один за другим.

Проблема с этим заключается в том, что запрос на вход еще не завершен, запрос поиска не проходит, и они снова попадают на страницу входа в систему. Если они закроют окно и снова начнут поиск, это сработает, но это также раздражает, не так много, как исходная ситуация.

Иначе, чем тот факт, что вы действительно должны видеть, что страница открыта (если она не скрыта в iframe), в чем разница между отправкой параметров через $.post() и отправкой формы с использованием метода POST? Они выглядят одинаково в firebug. Есть ли способ, которым я могу настроить обратный вызов для отправки формы, поэтому он ждет завершения первого запроса до начала второго?

4b9b3361

Ответ 1

$. post использует xmlhttprequest для отправки данных. Xhr ограничен через cors. Отправка прямого HTTP-запроса POST - нет.

Ответ 2

При выполнении запроса POST в другой домен вы не сможете получить доступ к ответу с помощью JavaScript (даже если вы отправите форму в iframe).

Однако при использовании XHR у вас есть полный доступ к ответу, поэтому вы можете делать много плохих вещей - например. доступ к страницам, на которых пользователь вошел в систему, отслеживая свою корпоративную интрасеть и т.д.

Таким образом, ограничения XHR не должны избегать CSRF, но чтобы избежать раскрытия привилегированной информации.

Ответ 3

Политика ajax same-origin заключается в том, чтобы прекратить отправку вашей информации через сеть на свой персональный сервер, не зная об этом. Сообщения страниц другим серверам не рекомендуются и могут не работать.

Вы можете решить это? Вы можете заменить форму submit jq, чтобы дождаться завершения регистрационного статуса, а затем отправить форму, однако я не уверен, что это хорошая идея. Цикл вращения обычно указывает на ошибку дизайна.

Сколько контроля над кодом у вас есть? Можете ли вы сделать заявку сделать логин, а в ответ отправить поиск? Или сделать поиск не требующим входа?