Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавить строку в Http заголовок 
:(
    Опции темы
artmetrist
Дата 18.3.2015, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.3.2015

Репутация: нет
Всего: нет



Подскажите как добавить в заголовок строку GET /test.txt HTTP/1.1
Параметр: значение не проблема добавить, а как добавить именно такую строку в начало http заголовка?
PM MAIL   Вверх
Bulat
Дата 19.3.2015, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(artmetrist @  18.3.2015,  22:27 Найти цитируемый пост)
Подскажите как добавить в заголовок строку GET /test.txt HTTP/1.1

Не совсем понятно что из себя представляет заголовок...


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
tzirechnoy
Дата 19.3.2015, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: -1
Всего: 16



Вероятно, в модуле CGI?
Да никак. Более того, обычно совершэнно незачем: Вы явно пытаетесь решыть какую-то задачу негодными средствами.
PM MAIL   Вверх
artmetrist
Дата 19.3.2015, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.3.2015

Репутация: нет
Всего: нет



Цитата(Bulat @ 19.3.2015,  07:40)
Не совсем понятно что из себя представляет заголовок...

Заголовок должен быть таким:
Код

GET /test.txt HTTP/1.1
Host: webdav.yandex.ru
Accept: */*
Authorization: Basic $auth

PM MAIL   Вверх
infarch
Дата 19.3.2015, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: нет
Всего: 1



artmetrist, опишите подробнее что вы хотите сделать.
PM MAIL   Вверх
Bulat
Дата 19.3.2015, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(artmetrist @  19.3.2015,  13:27 Найти цитируемый пост)
Заголовок должен быть таким:

А какой он сейчас и как ты его создаешь??


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
artmetrist
Дата 19.3.2015, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.3.2015

Репутация: нет
Всего: нет



Код

#!/usr/bin/perl
 use LWP;
 use MIME::Base64 qw(encode_base64);
 my $url = 'https://webdav.yandex.ru/';
 my $user = 'Log';
 my $pass = 'Pass';
 my $ua = LWP::UserAgent->new;
 my $auth = encode_base64($user.":".$pass);
        print $auth;

 my $headers = HTTP::Headers->new(
                                'Host' => 'webdav.yandex.ru',
                                'Accept' => '*/*',
                                'Authorization' => "Basic $auth",
                                );
 print $headers -> as_string ();

 my $req = HTTP::Request->new(GET => $url,$headers);
 my $res = $ua->request($req);
 if ($res->is_success) {
        print $res->content;
                        }
 else {
        print $res->status_line, "\n";
        }

 exit;

Хочу написать скрипт который будет скачивать файл с яндекс.диск, первой строчкой в http заголовке должна идти строка GET /путь_к_файлу HTTP/1.1(если удалить файл, то вместо GET DELETE и т.д.).
Заголовок получается такой:
Accept: */*
Authorization: Basic TG9nOlBhc3M=
Host: webdav.yandex.ru



PM MAIL   Вверх
alezzz
Дата 19.3.2015, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 2
Всего: 14



WireShark-ом (tcpdump-ом) посмотрите что от вас уходит, подозреваю что там все нормально с заголовком а проблема с https.

Это сообщение отредактировал(а) alezzz - 19.3.2015, 18:06
PM MAIL   Вверх
artmetrist
Дата 19.3.2015, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.3.2015

Репутация: нет
Всего: нет



Цитата(alezzz @ 19.3.2015,  18:04)
WireShark-ом (tcpdump-ом) посмотрите что от вас уходит, подозреваю что там все нормально с заголовком а проблема с https.

Заголовок печатается 
Код

print $headers -> as_string ();

По умолчанию в заголовке User-Agent: libwww-perl/6.04, в ответе нет ошибки, присылает страницу:
Код

<!DOCTYPE HTML>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7,IE=edge" />
<title>Яндекс.Почта</title>
<script type="text/javascript">var redirect = "/?retpath=https%3A%2F%2Fmail.yandex.ru%2Fneo2%2F";
var hash = window.location.hash;
if (!/#|%23/.test(redirect) && hash) {
if (redirect.indexOf('retpath') == -1){
redirect+=hash;
} else {
redirect+=encodeURIComponent(hash);
}
}
window.location.replace(redirect);</script>
<meta http-equiv="refresh" content="0; url=/?retpath=https%3A%2F%2Fmail.yandex.ru%2Fneo2%2F"/>
</head><body></body></html>

Не полностью сформирован заголовок, если бы был нужный заголовок, можно бы было грешить на что то. А LWP разве по-умолчанию не поддерживает https?

Это сообщение отредактировал(а) artmetrist - 19.3.2015, 18:27
PM MAIL   Вверх
alezzz
Дата 19.3.2015, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 2
Всего: 14



сделайте после запроса:
Код

use Data::Dumper;
print Dumper $res;

там будет видно какие заголовки и что возвращяется от сервера.

LWP поддерживает https, но что там у вас с ssl? 
PM MAIL   Вверх
Bulat
Дата 19.3.2015, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(artmetrist @  19.3.2015,  18:24 Найти цитируемый пост)
window.location.replace(redirect);

Возможно, что твой пусть до файла не совсем точный! 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
artmetrist
Дата 19.3.2015, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.3.2015

Репутация: нет
Всего: нет



Цитата(Bulat @ 19.3.2015,  19:22)
Цитата(artmetrist @  19.3.2015,  18:24 Найти цитируемый пост)
window.location.replace(redirect);

Возможно, что твой пусть до файла не совсем точный!

В этом то и суть. Путь к файлу указывается в заголовке, первой строкой:
GET /text.txt HTTP/1.1
Чтобы все работало, нужно отправить серверу такой заголовок:
GET  /text.txt HTTP/1.1
Host: webdav.yandex.ru
Accept: */*
Authorization: Basic $auth
PM MAIL   Вверх
Bulat
Дата 20.3.2015, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(artmetrist @  19.3.2015,  23:01 Найти цитируемый пост)
В этом то и суть.

А мне кажется, что ты стучишься в закрытую дверь, вместо того, чтобы проанализировать приходящий тебе ответ от сервера!


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
alezzz
Дата 20.3.2015, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 2
Всего: 14



Попробовал сам запросить, всё-таки https так просто сниффером не посмотришь, вобщем через squid запрашивал и посмотрел логи. Собственно вопрос: а где запрашиватеся файл test.txt? К вашему исходнику добавил только настройки прокси, в результате в логах:
Код

GET https://webdav.yandex.ru/ - HIER_NONE/- text/html


Что будет если урл поменять на https://webdav.yandex.ru/test.txt ?

Это сообщение отредактировал(а) alezzz - 20.3.2015, 08:35
PM MAIL   Вверх
tzirechnoy
Дата 20.3.2015, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: -1
Всего: 16



Цитата
первой строчкой в http заголовке должна идти строка GET


GET ... -- это строка запроса, а не заголовок.
PM MAIL   Вверх
artmetrist
Дата 21.3.2015, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.3.2015

Репутация: нет
Всего: нет



Цитата(tzirechnoy @ 20.3.2015,  12:25)
Цитата
первой строчкой в http заголовке должна идти строка GET


GET ... -- это строка запроса, а не заголовок.

Строка запроса в заголовке!!!
"Строки после главной строки запроса (GET /index.html HTTP/1.1) имеют следующий формат: Параметр: значение. Таким образом задаются параметры запроса. Это является необязательным, все строки после главной строки запроса могут отсутствовать; в этом случае сервер принимает их значение по умолчанию или по результатам предыдущего запроса (при работе в режиме Connection: Keep-Alive). "
Т.е. кроме этой строки остальные параметры не обязательны... клиент-сервер могут обмениваться только заголовками, что по вашему запрос в этом случае?
PM MAIL   Вверх
artmetrist
Дата 21.3.2015, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.3.2015

Репутация: нет
Всего: нет



Вообщем заголовок получилось сформировать, только в ответ тишина...
Код

#!/usr/bin/perl

use Socket;
use MIME::Base64 qw(encode_base64);
 my $user = 'usr';
 my $pass = 'pass';
my $auth = encode_base64($user.":".$pass);
print $auth;
$|++;
my $request=<<REQ;
GET /gori.jpg HTTP/1.1
Host: webdav.yandex.ru
Accept: */*
Authorization: Basic $auth
REQ
print $request;
socket(SOCK, PF_INET, SOCK_STREAM,getprotobyname('tcp'));
my $host = 'webdav.yandex.ru';
my $iaddr=inet_aton($host);
print "host $host\n";
print "iaddr $iaddr\n";
my $port=443;
my $paddr=sockaddr_in($port,$iaddr);
print "paddr $paddr\n";
connect(SOCK, $paddr);
send(SOCK, $request, 0);
my @data = <SOCK>;
close(SOCK);
print "data @data\n";
exit 0

Вывод работы скрипта:
Код

dXNyOnBhc3M=
GET /gori.jpg HTTP/1.1
Host: webdav.yandex.ru
Accept: */*
Authorization: Basic dXNyOnBhc3M=

host webdav.yandex.ru
iaddr մ�5
paddr �մ�5
data

PM MAIL   Вверх
tzirechnoy
Дата 23.3.2015, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: -1
Всего: 16



Цитата
Строка запроса в заголовке!!! "Строки


Не читайте перед обедом советских газет ©.

Цитата
 только в ответ тишина...


Неудивительно -- поскольку порт 443, традицыонно, используется для подключения по протоколу SSL/TLS, а не голому HTTP.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.1693 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.