+  HandyCache форум
|-+  Главная категория» Общие вопросы» Работа с репозиторием PEAR через HandyCache
Имя пользователя:
Пароль:
Страниц: 1 [2]  Все   Вниз
  Отправить эту тему    Печать  
Автор Тема: Работа с репозиторием PEAR через HandyCache  (Прочитано 11027 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #20 : 29 июня 2009, 20:59:06 »

Да, похоже на баг HC...
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #21 : 29 июня 2009, 21:08:43 »

Не думаю, что это баг НС. Вот цитата из стандарта
Цитировать
14.23 HostThe Host request-header field specifies the Internet host and port number of the resource being requested, as obtained from the original URI given by the user or referring resource (generally an HTTP URL,

as described in section 3.2.2). The Host field value MUST represent the naming authority of the origin server or gateway given by the original URL. This allows the origin server or gateway to differentiate between internally-ambiguous URLs, such as the root "/" URL of a server for multiple host names on a single IP address.

       Host = "Host" ":" host [ ":" port ] ; Section 3.2.2

A "host" without any trailing port information implies the default port for the service requested (e.g., "80" for an HTTP URL). For example, a request on the origin server for <http://www.w3.org/pub/WWW/> would properly include:

       GET /pub/WWW/ HTTP/1.1
       Host: www.w3.org

A client MUST include a Host header field in all HTTP/1.1 request messages . If the requested URI does not include an Internet host name for the service being requested, then the Host header field MUST be given with an empty value. An HTTP/1.1 proxy MUST ensure that any request message it forwards does contain an appropriate Host header field that identifies the service being requested by the proxy. All Internet-based HTTP/1.1 servers MUST respond with a 400 (Bad Request) status code to any HTTP/1.1 request message which lacks a Host header field.

See sections 5.2 and 19.6.1.1 for other requirements relating to Host.
Все же сделаю, чтобы НС добавлял host, если его нет.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #22 : 29 июня 2009, 21:32:01 »

A client MUST include a Host header field in all HTTP/1.1 request messages

В данном случае на скрине видно, что PEAR - это 1.0 клиент и шлет он в запросе полный URL.
HC преобразует этот запрос в HTTP/1.1, обрезает URL до относительного, не добавляя заголовок Host, как того требует стандарт HTTP/1.1. Баг HC на лицо!
Сообщить модератору   Записан
NT Man
Новичок
*

Репутация: +1/-0
Offline Offline

Сообщений: 40


« Ответ #23 : 29 июня 2009, 21:35:09 »

DenZzz меня опередил, но всеже напишу как работает CCProxy. (снял и его часть HTTPDebugger-ом)

1) Запрос из скрипта к PEAR. Прошу обратить на заголовок там HTTP/1.0
Цитировать
GET http://pear.php.net/get/OLE-1.0.0RC1.tgz HTTP/1.0
User-Agent: PEAR/1.7.2/PHP/5.2.9-2
Proxy-Authorization: Basic TWlrZTphMXMyZDNmNA==
Connection: close

2) Запрос из CCProxy, который делает свой заголовок + спрашивает а не изменился ли файл с Sun, 14 Jun 2009 01:39:20 +0600
Цитировать
GET /channel.xml HTTP/1.1
If-Modified-Since: Sun, 14 Jun 2009 01:39:20 +0600
User-Agent: PEAR/1.7.2/PHP/5.2.9-2
Connection: Close
Host: pear.php.net
Cache-Control: no-cache

P.S. Ура скоро будет новая версия HC Улыбка
Сообщить модератору   Записан
Страниц: 1 [2]  Все   Вверх
  Отправить эту тему    Печать  

 
Перейти в: