XmlHttp Запрос Базовая проблема аутентификации - PullRequest
3 голосов
/ 31 августа 2009

У меня есть следующий код, который создает серверный объект класса xmlhttp. Я пытаюсь подключиться к сайту, который требует базовой аутентификации. Я могу заставить это работать с кодом ниже.

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

Это ошибка или глюк?

Дополнительный фон: IIS 5 & ASP Classic Ошибка, полученная, когда один из двух элементов пропущен, является HTTP-статусом 401: "Вы не авторизованы для просмотра этой страницы У вас нет разрешения на просмотр этого каталога или страницы с использованием предоставленных вами учетных данных, поскольку ваш веб-браузер отправляет поле заголовка WWW-Authenticate, которое веб-сервер не настроен для приема. "

Поскольку IIS делает запрос, я не могу проверить его с помощью Fiddler: - (

Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
xmlhttp.setTimeouts 5000, 5000, 10000, 10000 'ms - resolve, connect, send, receive
xmlhttp.open "GET", "http://example.com/", False, "username", "password"
xmlhttp.setRequestHeader "Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ="
xmlhttp.send

1 Ответ

3 голосов
/ 31 августа 2009

Я полагаю, что вы нажали это известное ограничение (или ошибку), которое можно свести к msxml2, в котором отсутствует (или неправильно) поддержка "согласованных" механизмов аутентификации, что означает, что вы должны принудительно вызвать устранить проблему (обойти неправильно проведенное согласование), добавив заголовок авторизации самостоятельно, как вы делаете.

...