URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 1450
[ Назад ]

Исходное сообщение
"wget не понимает --header='Content-Length: xxxx'"

Отправлено USER , 19-Июн-03 17:22 
Два варианта или wget его игнорирует (и берёт по умолчанию) или ругается на то, что я его вообще не указал (ошибка 411)

Win98
Wget – 1.8.2
Дальше там сквид но, я думаю, он тут не причём

Пример 1:

wget -s --header="Accept-Ranges: bytes" --header="Content-Range: bytes 0-15900/15902" --header="Content-Length: 15901" http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic...

ошибка 411 Length Required

Пример 2:

wget -s --header="Accept-Ranges: bytes" --header="Content-Range: bytes 0-15900/15902" --header ="Content-Length: 15901" http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic...

скачивает все 15902 байта (типа он меня вообще не понял)

ЗЫ Пример 2 отличается от примера 1 тем, что там добавлен пробел после третьего слова header


Содержание

Сообщения в этом обсуждении
"wget не понимает --header='Content-Length: xxxx'"
Отправлено demon , 19-Июн-03 18:34 
По идее wget-у должно быть абсолютно всеравно что в этих хеадерах передается. Т.е. он должен их передавать в том виде в каком получает из командной строки.

Имеет смысл посмотреть что именно wget передает на сервер, т.е. полный запрос со всеми хеадерами, который получает сервер.


"wget не понимает --header='Content-Length: xxxx'"
Отправлено USER , 19-Июн-03 19:34 
>По идее wget-у должно быть абсолютно всеравно что в этих хеадерах передается.
>Т.е. он должен их передавать в том виде в каком получает
>из командной строки.
>
>Имеет смысл посмотреть что именно wget передает на сервер, т.е. полный запрос
>со всеми хеадерами, который получает сервер.


Посмотрел :(
В первом случае уходит:
GET http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic... HTTP/1.0..User-Agent: Wget/1.8.2. .Host: info-images.rambler.ru..Accept: */*..Accept-Ranges: bytes..Content-Range: bytes 0-15900/15902..Content-Length: 15901

Во втором
GET http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic... HTTP/1.0..User-Agent: Wget/1.8.2. .Host: info-images.rambler.ru..Accept: */*..Accept-Ranges: bytes..Content-Range: bytes 0-15900/15902..=Content-Length: 15901

И что в первом случае не так (что не так во втором я вижу)


"wget не понимает --header='Content-Length: xxxx'"
Отправлено demon , 19-Июн-03 19:48 
Не понял.. можно с разбивкой по строчкам? Т.е. так как получает все это сервер.

"wget не понимает --header='Content-Length: xxxx'"
Отправлено USER , 19-Июн-03 20:15 
>Не понял.. можно с разбивкой по строчкам? Т.е. так как получает все
>это сервер.


GET http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic... HTTP/1.0
User-Agent: Wget/1.8.2
Host: info-images.rambler.ru
Accept: */*
Accept-Ranges: bytes
Content-Range: bytes 0-15900/15902
Content-Length: 15901


"wget не понимает --header='Content-Length: xxxx'"
Отправлено demon , 19-Июн-03 20:24 
>GET http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic... HTTP/1.0

Возникло у меня тут сомнение, что HTTP/1.0 поддерживает докачку.... Может как-то повлиять, чтобы это был HTTP/1.1?

А все остальное вроде верно (если в циферях не напутали).


"wget не понимает --header='Content-Length: xxxx'"
Отправлено USER , 19-Июн-03 21:05 
>>GET http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic... HTTP/1.0
>
>Возникло у меня тут сомнение, что HTTP/1.0 поддерживает докачку.... Может как-то повлиять,
>чтобы это был HTTP/1.1?
>
>А все остальное вроде верно (если в циферях не напутали).


Сделал HTTP/1.1
Теперь всё то же самое кроме
GET http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic... HTTP/1.1
Результат тот же.



"wget не понимает --header='Content-Length: xxxx'"
Отправлено Арлекин , 20-Июн-03 08:47 
Там вроде ключ -с есть. Для докачки. По крайней мере в Mandrake 9.0 точно есть и работает - сам проверял.

"wget не понимает --header='Content-Length: xxxx'"
Отправлено USER , 20-Июн-03 11:15 
>Там вроде ключ -с есть. Для докачки. По крайней мере в Mandrake
>9.0 точно есть и работает - сам проверял.


Так при этом сервер получает
Range: bytes xxxxx-
Типа, надо выдавать с xxxxx и дальше
И сам отвечает, с какого – по какой из скольки и сколько будет давать.
Content-Range: bytes yyyyy-zzzzz/aaaaa
Content-Length: bbb
Если же wget-у подсунуть хедер типа
Range: bytes xxxxx-
он его передаёт дальше, но сам уже не понимает, что это докачка (-с я не ставлю). Сервер честно даёт тело файла просто wget его игнорирует, (получив 206 Partial Content, и решив, что это что-то не то, повторяет запрос).


"wget не понимает --header='Content-Length: xxxx'"
Отправлено USER , 20-Июн-03 17:44 
Посмотрел, как качает в несколько струй RegetDeluxe
Делит на куски,
Начинает несколько сессий, типа
Range: bytes 0-
Range: bytes 1000-
Range: bytes 2000-
Range: bytes 3000-
Range: bytes 4000-
И не дослушивая до конца ответы сервера, сбрасывает соединение.
Как бы wget заставить прослушать на входе только необходимую часть и сбросить?


"wget не понимает --header='Content-Length: xxxx'"
Отправлено USER , 20-Июн-03 20:43 
>>GET http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic... HTTP/1.0
>
>Возникло у меня тут сомнение, что HTTP/1.0 поддерживает докачку.... Может как-то повлиять,
>чтобы это был HTTP/1.1?
>
>А все остальное вроде верно (если в циферях не напутали).

Вот что интересно, сервер отвечает, что он работает по протоколу HTTP/1.0, согласно rfc действительно HTTP/1.0 Range не поддерживает, а всё работает…..