как указать конфигурацию прокси с помощью Microsoft.XMLHTTP?

Я использую Microsoft.XMLHTTP с классической страницы asp для публикации информации на другом сайте...

Я хотел бы иметь возможность проверить, что происходит с fiddler, и для этого мне нужно найти способ настроить Microsoft.XMLHTTP для использования прокси...

Является ли это возможным? откуда Microsoft.XMLHTTP получает свою конфигурацию?

большое спасибо


person opensas    schedule 25.06.2009    source источник
comment
Означает ли это, что вы не можете видеть запрос/ответ в скрипаче при публикации с использованием XMLHTTP?   -  person shahkalpeshp    schedule 25.06.2009
comment
да, правильно... Я имею в виду, что я могу видеть запрос и ответ, которые попадают на мою страницу asp, но я не вижу тот, который я делаю с помощью XMLHTTP...   -  person opensas    schedule 25.06.2009


Ответы (4)


Я думаю, что некоторые вещи здесь нуждаются в прояснении.

ProgID "Microsoft.XMLHTTP" указывает на тот же класс, что и "MSXML2.XMLHTTP". Этот класс использует стек протоколов WinINET HTTP, который использует Internet Explorer, и поэтому будет использовать любую конфигурацию прокси-сервера, найденную в настройках Интернета на ПК.

Следовательно, для "Microsoft.XMLHTTP" команда proxycfg бесполезна.

Альтернативой XMLHTTP является «MSXML2.ServerXMLHTTP». Этот класс использует стек протоколов WinHTTP HTTP, который разработан, чтобы быть легким и дружественным к серверу. Безопасно использовать несколько экземпляров в нескольких потоках в одном процессе, где WinINET не работает. По этой причине в коде ASP на стороне сервера следует использовать ServerXMLHTTP.

WinHTTP не использует настройки Интернета, которые использует WinINET, поэтому для настройки прокси-сервера, который будет использовать ServerXMLHTTP, вам необходимо использовать команду proxycfg. Действительно полезная команда: -

proxycfg -u

Который копирует текущие настройки прокси-сервера WinINET в те, которые используются WinHTTP, если вы используете такие инструменты, как fiddler, это полезно для начала мониторинга трафика, проходящего через WinHTTP, после запуска fiddler. (Обратите внимание, что вы должны нажать proxycfg -d, чтобы удалить настройки прокси-сервера).

ServerXMLHTTP также имеет метод setProxy, который позволяет динамически настраивать фактические параметры прокси-сервера в виде кода.

person AnthonyWJones    schedule 25.06.2009
comment
большое спасибо, очень полезный ответ! (Я вижу, откуда взялась ваша репутация 16k...) Я попытался использовать ServerXMLHTTP с proxycfg -u, и это сработало как шарм... большое спасибо (но мне все еще интересно, почему с XMLHTTP я не работаю...) - person opensas; 25.06.2009

Для Windows Vista и более поздних версий файл proxycfg.exe может быть объявлен устаревшим и заменен на netsh winhttp. Как упоминалось в этой статье: http://msdn.microsoft.com/en-us/library/windows/desktop/aa384069%28v=vs.85%29.aspx

Как и в моей ситуации в win7, мне нужно сделать следующее, чтобы установить прокси:

netsh winhttp set proxy myProxyServer:80
person oodograss    schedule 19.08.2013


Я просмотрел эту ветку, чтобы решить свою проблему - это помогло, но теперь есть изменения в более новых системах.
Моя ситуация заключалась в выполнении веб-вызова MSXML2.ServerXMLHTTP с корпоративного сервера, проходящего через прокси-сервер с обработанными учетными данными Active Directory.< бр />

У меня было несколько проблем, но в конце концов мне удалось заставить его работать только со стандартным MSXML2.ServerXMLHTTP без необходимости указывать версии .3.0 или .6.0.

На более новых серверах Windows нет proxycfg, вам нужно использовать netsh, как упоминалось ранее.

Есть несколько вещей, которые вам нужно согласовать.
В моем сценарии я запускал веб-сайт и пул приложений под учетными данными учетной записи пользователя AD (это требовалось для доступа к базе данных). Я бы предположил, что по крайней мере пул приложений потребуется запустить от имени учетной записи AD

Это было в 64-битной системе Windows

  1. Очевидно, что пользователю AD потребуется доступ в Интернет.
  2. Вам нужно будет указать настройки прокси-сервера winhttp с помощью netsh
  3. Если у вас включен параметр «Включить 32-разрядные приложения», вам также необходимо установить прокси-сервер winhttp для 32-разрядных. Он будет искать этот параметр.

Так как?

Проверьте настройки прокси-сервера winhttp в командной строке

%WINDIR%\System32\NETSH WINHTTP SHOW PROXY

Проверьте настройки прокси-сервера winhttp в командной строке

%WINDIR%\SysWOW64\NETSH WINHTTP SHOW PROXY

Если вам нужно установить их из командной строки [измените 8080 на свой порт]

%WINDIR%\System32\NETSH WINHTTP SET PROXY PROXYSERVERURL:8080
%WINDIR%\SysWOW64\NETSH WINHTTP SET PROXY PROXYSERVERURL:8080
person Brian Somerfield    schedule 09.09.2016