Проблемы с xmlHttpRequest + куки + перенаправление - PullRequest
0 голосов
/ 05 ноября 2010

Я пытаюсь войти в веб-службу с помощью xmlHttpRequest.

Кажется, что веб-служба аутентифицируется с помощью файлов cookie.Проанализировав связь с браузером IE, я пришел к выводу, что последовательность в основном следующая:

(1) сервер отправляет форму с запросом имени пользователя и пароля.

(2) клиент отправляет запрос POST, содержащийимя пользователя и пароль введены.

(3) сервер отправляет сообщение перенаправления (HTTP 302) на тот же URL-адрес с заголовком «Set-Cookie», содержащим идентификатор сеанса

(4).- отправляет тот же URL-адрес, содержащий cookie-файл, полученный от сервера, в сообщении перенаправления.

(5) сервер получает идентификатор сеанса и завершает аутентификацию.

Я пытался эмулировать ту же последовательность, используя xmlHttpRequest в JavaScript,Однако я обнаружил проблему.

Похоже, xmlHttpRequest не перенаправляет файлы cookie.Другими словами, (4) не происходит, и аутентификация не завершена.

Чтобы усугубить проблему, xmlHttpRequest, похоже, не обнаруживает события перенаправления (если это было возможно, я мог бы по крайней мере установить заголовок Cookie доповторная отправка запроса).Функция onreadystatechange () вызывается только после завершения всего процесса перенаправления.

Итак, я не имею никакого решения для решения этой проблемы и завершения аутентификации.

Кроме того, поскольку это связано с "общедоступным" веб-сервисом, я не могу ничего изменить на стороне сервера.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 05 ноября 2010

Насколько я знаю, вы не можете использовать xmlHttpRequest для запроса URL-адреса сервера, отличного от сервера, к которому вы подключены. Ould Не могли бы вы сделать это?

В объяснении, если страница с кодом javascript находится на yourdomain.com, вы не можете использовать xmlHttpRequest для вызова веб-службы в example.com.

0 голосов
/ 09 ноября 2010

С предыдущими комментариями я лучше понял ситуацию.

Шаги (4) и (5) предназначены только для перенаправления вас на главную страницу, настоящая аутентификация заканчивается (3), как только вы получаете куки (например, с помощью getheaders), вы вошли в систему. Затем для каждого нового запроса, который вы делаете с правильными файлами cookie, веб-сайт будет видеть вас как зарегистрированного пользователя.

Вы пытаетесь автоматизировать запрос к сайту? Или просто автоматизировать процесс входа в систему?

...