| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: разработка для Web > Добавить строку в Http заголовок |
| Автор: artmetrist 18.3.2015, 22:27 |
| Подскажите как добавить в заголовок строку GET /test.txt HTTP/1.1 Параметр: значение не проблема добавить, а как добавить именно такую строку в начало http заголовка? |
| Автор: Bulat 19.3.2015, 07:40 | ||
Не совсем понятно что из себя представляет заголовок... |
| Автор: tzirechnoy 19.3.2015, 11:49 |
| Вероятно, в модуле CGI? Да никак. Более того, обычно совершэнно незачем: Вы явно пытаетесь решыть какую-то задачу негодными средствами. |
| Автор: artmetrist 19.3.2015, 13:27 | ||||
Заголовок должен быть таким:
|
| Автор: infarch 19.3.2015, 14:58 |
| artmetrist, опишите подробнее что вы хотите сделать. |
| Автор: Bulat 19.3.2015, 15:12 |
А какой он сейчас и как ты его создаешь?? |
| Автор: artmetrist 19.3.2015, 17:59 | ||
Хочу написать скрипт который будет скачивать файл с яндекс.диск, первой строчкой в http заголовке должна идти строка GET /путь_к_файлу HTTP/1.1(если удалить файл, то вместо GET DELETE и т.д.). Заголовок получается такой: Accept: */* Authorization: Basic TG9nOlBhc3M= Host: webdav.yandex.ru |
| Автор: alezzz 19.3.2015, 18:04 |
| WireShark-ом (tcpdump-ом) посмотрите что от вас уходит, подозреваю что там все нормально с заголовком а проблема с https. |
| Автор: artmetrist 19.3.2015, 18:24 | ||||||
Заголовок печатается
По умолчанию в заголовке User-Agent: libwww-perl/6.04, в ответе нет ошибки, присылает страницу:
Не полностью сформирован заголовок, если бы был нужный заголовок, можно бы было грешить на что то. А LWP разве по-умолчанию не поддерживает https? |
| Автор: alezzz 19.3.2015, 19:09 | ||
сделайте после запроса:
там будет видно какие заголовки и что возвращяется от сервера. LWP поддерживает https, но что там у вас с ssl? |
| Автор: Bulat 19.3.2015, 19:22 |
Возможно, что твой пусть до файла не совсем точный! |
| Автор: artmetrist 19.3.2015, 23:01 | ||
В этом то и суть. Путь к файлу указывается в заголовке, первой строкой: GET /text.txt HTTP/1.1 Чтобы все работало, нужно отправить серверу такой заголовок: GET /text.txt HTTP/1.1 Host: webdav.yandex.ru Accept: */* Authorization: Basic $auth |
| Автор: Bulat 20.3.2015, 06:53 |
А мне кажется, что ты стучишься в закрытую дверь, вместо того, чтобы проанализировать приходящий тебе ответ от сервера! |
| Автор: alezzz 20.3.2015, 08:34 | ||
Попробовал сам запросить, всё-таки https так просто сниффером не посмотришь, вобщем через squid запрашивал и посмотрел логи. Собственно вопрос: а где запрашиватеся файл test.txt? К вашему исходнику добавил только настройки прокси, в результате в логах:
Что будет если урл поменять на https://webdav.yandex.ru/test.txt ? |
| Автор: tzirechnoy 20.3.2015, 12:25 | ||
GET ... -- это строка запроса, а не заголовок. |
| Автор: artmetrist 21.3.2015, 22:26 | ||||
Строка запроса в заголовке!!! "Строки после главной строки запроса (GET /index.html HTTP/1.1) имеют следующий формат: Параметр: значение. Таким образом задаются параметры запроса. Это является необязательным, все строки после главной строки запроса могут отсутствовать; в этом случае сервер принимает их значение по умолчанию или по результатам предыдущего запроса (при работе в режиме Connection: Keep-Alive). " Т.е. кроме этой строки остальные параметры не обязательны... клиент-сервер могут обмениваться только заголовками, что по вашему запрос в этом случае? |
| Автор: artmetrist 21.3.2015, 22:44 | ||||
Вообщем заголовок получилось сформировать, только в ответ тишина...
Вывод работы скрипта:
|
| Автор: tzirechnoy 23.3.2015, 15:29 | ||||
Не читайте перед обедом советских газет ©.
Неудивительно -- поскольку порт 443, традицыонно, используется для подключения по протоколу SSL/TLS, а не голому HTTP. |