Здравствуйте.
Задача: создать туннель через прокси методом CONNECT.
Проблема: возникает из-за странной особенности библиотеки WinInet (или меня

, точнее её API HttpOpenRequest:
После вызова всех соответствующих функций (InternetOpen,....) пытаюсь создать заголовок следующим образом:
hRequest := HttpOpenRequest(hConn,
PChar('CONNECT'),
PChar('localhost:21'),
PChar('HTTP/1.1'),
nil,
nil,
0,
0);
После вызова HttpSendRequest я получаю ошибку ERROR_INVALID_SERVER_RESPONSE, а в логах прокси вижу
CONNECT /localhost:21 HTTP/1.1
Откуда берется слеш перед именем хоста? И как от него избавиться?
Уже неделю пытаюсь понять... пока безуспешно

Спасибо.
Здравствуйте, ValeriSh, Вы писали:
VS>hRequest := HttpOpenRequest(hConn,
VS> PChar('CONNECT'),
VS> PChar('localhost:21'),
VS> PChar('HTTP/1.1'),
VS> nil,
VS> nil,
VS> 0,
VS> 0);
VS>CONNECT /localhost:21 HTTP/1.1
VS>Откуда берется слеш перед именем хоста? И как от него избавиться?
VS>Уже неделю пытаюсь понять... пока безуспешно
Очевидно, WinInet считает себя очень умным и самостоятельно добавляет "/". Понимать тут не надо, это надо принять as is

Попробуйте WinHTTP вместо WinInet...
Здравствуйте, Michael Chelnokov, Вы писали:
MC>Очевидно, WinInet считает себя очень умным и самостоятельно добавляет "/". Понимать тут не надо, это надо принять as is
MC>Попробуйте WinHTTP вместо WinInet...
WinHTTP — это, конечно, решение. Однако ж не на каждой машине стоит ХР с сервис-паком-1 или 2003-сервер. Ослик ИЕ, с прикрученным к нему WinInet'ом, напротив, есть (почти) везде

Да и таскать с собой ДЛЛ в 300Кб... неудобно.
Тем более, что проблема упирается в один слеш.
Здравствуйте, ValeriSh, Вы писали:
А если указать
http://localhost:21 ?
Здравствуйте, adontz, Вы писали:
A>А если указать http://localhost:21 ?
Увы, это ничего не меняет

Слеш все равно добавляется.