Форум: "Сети";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
ВнизВопрос тем, кто писал Proxy Найти похожие ветки
← →
Zyb (2004-08-25 16:10) [0]Вопрос в следующем:
я использую компоненту TServerSocket, к ней коннектится IE и посылает запрос GET. Я из этого запроса вычленяю HOST, сохраняю запрос и создаю динамически TClientSocket, который коннектится к HOSTу и посылает сохраненный запрос. Далее HOST возвращает ответ, который я и передаю IE.
Данная система работает на 90% сайтов. Но есть некоторые:
www.yandex.ru, www.yahoo.com и т.д., которые почему-то получая запрос неправильно воспринимают адрес странички, а именно в запросе идет GET http://www.yandex.ru/ HTTP1.0 , а yandex воспринимает, будто бы была запрошена страничка http://www.yandex.ru/www.yandex.ru, т.е. адрес подставляется 2 раза.
В запросе, поступающем от IE ничего не меняю и передаю его серверу как есть.
Подскажите, что-нибудь по этому поводу
← →
Polevi © (2004-08-25 17:06) [1]код
← →
VMcL © (2004-08-25 17:08) [2]Если мне не изменяет склероз, то запрос должен идти такой:
GET / HTTP/1.0
Host: yandex.ru
← →
VMcL © (2004-08-25 17:13) [3]>>VMcL © (25.08.04 17:08) [2]
Изменяет. Это в 1.1, а в 1.0 сразу полный адрес. Но если коннект к хосту уже есть, то все равно просто: "GET / HTTP/1.0":
см. http://www.faqs.org/rfcs/rfc1945.html > п. 5.1.2
← →
Piter © (2004-08-26 00:07) [4]что-то ты не так говоришь. Если хочешь узнать корень - то запрос ты правильный привел. Без разницы 1.0 это или 1.1
Вот если через прокси работать - другое дело
← →
Piter © (2004-08-26 00:08) [5]VMcL © (25.08.04 17:13) [3]
> п. 5.1.2
что-то я там ничего такого не нашел...
← →
Zyb (2004-08-26 08:54) [6]Всем спасибо дело действительно оказалось в запросе GET нужно вместо строки GET http://www.yandex.ru/ HTTP/1.0 подставлять строку GET / HTTP/1.0
← →
VMcL © (2004-08-26 10:18) [7]>>Piter © (26.08.04 00:08) [5]
>что-то я там ничего такого не нашел...
Тю. Англицким же по белому написано :)
The absoluteURI form is only allowed when the request is being made
to a proxy. The proxy is requested to forward the request and return
the response. If the request is GET or HEAD and a prior response is
cached, the proxy may use the cached message if it passes any
restrictions in the Expires header field. Note that the proxy may
forward the request on to another proxy or directly to the server
specified by the absoluteURI. In order to avoid request loops, a
proxy must be able to recognize all of its server names, including
any aliases, local variations, and the numeric IP address. An example
Request-Line would be:
GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.0
The most common form of Request-URI is that used to identify a
resource on an origin server or gateway. In this case, only the
absolute path of the URI is transmitted (see Section 3.2.1,
abs_path). For example, a client wishing to retrieve the resource
above directly from the origin server would create a TCP connection
to port 80 of the host "www.w3.org" and send the line:
GET /pub/WWW/TheProject.html HTTP/1.0
followed by the remainder of the Full-Request. Note that the absolute
path cannot be empty; if none is present in the original URI, it must
be given as "/" (the server root).
← →
Piter © (2004-08-26 10:25) [8]VMcL © (26.08.04 10:18) [7]
я не понял. И что? Где ты увидел полный запрос?
, а в 1.0 сразу полный адрес
← →
VMcL © (2004-08-26 11:43) [9]Вот: GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.0
← →
atruhin © (2004-08-30 10:07) [10]Данная ошибка да. Но чтобы получить нормально работающий прокси ты должен как минимум обрабатывать keep-alive, connection, запросы к состоянию кэша, и т.д. вообщем смотри rfc, там есть раздел посвященный работе через прокси.
В целом в отличие от простого портмапа HTTP прокси не совсем тривиальная вещь. Хороший пример 3proxy (если с С++ на короткой ноге :).
← →
Piter © (2004-09-05 22:43) [11]VMcL © (26.08.04 11:43) [9]
дык так надо указывать, если прокси есть!
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c