Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Добавить заголовок при 503 коде  (Прочитано 4250 раз)
0 Пользователей и 1 Гость смотрят эту тему.
perl6
Помогающий

ru
Offline Offline

« : 16-07-2021 02:54 » 

Приветствую. Никак не разберусь, как добавить заголовок при запросе. Т.е., настроить обработчик так, чтобы при 503 коде добавлялся к запросу заголовок с токеном. Вроде обработчики LWP могут манипулировать с заголовками, но заново послать запрос они не смогут. Нашел модуль LWP::UserAgent::Determined, однако там нет возможности манипулировать заголовками при коллбэках.
Вопрос. Как их подружить? В связке то наверняка можно решить поставленную задачу.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 16-07-2021 20:35 » 

Ничерта не понял. В чем сложность составить запрос заново или поправить исходный?
И точно 503, а не 403? На 503 намекает, что серверу дурно стало.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
perl6
Помогающий

ru
Offline Offline

« Ответ #2 : 17-07-2021 03:36 » new

Ничерта не понял. В чем сложность составить запрос заново или поправить исходный?
И точно 503, а не 403? На 503 намекает, что серверу дурно стало.

Вот кодом покажу (частью, чтобы все не копипастить). Там и правда 403, торопился и опечатался. Какая логика. Делаем запрос. Если 200, то все нормально. Если же 403, то добавляем заголовок с токеном и делаем снова его (за счет модуля Determined).

Код:
use LWP::UserAgent;
use LWP::Protocol::https;
use LWP::UserAgent::Determined;
use Data::Dumper;
require HTTP::Request;
use LWP::ConnCache;
use LWP::Simple;

my $ua = LWP::UserAgent::Determined->new(ssl_opts => { verify_hostname => 0 });

$ua->add_handler(response_header => sub {
    my ($res, $ua) = @_;

  $ua->default_header('Token' => 'тут токен');  # вот так робит, но не совсем комильфо
  $res->request->header('Token' => 'тут токен'); # а вот так - нет, хотя обработчик вроде как раз с заголовками работает, но пробовал и др. Почему-то не добавляет заголовок...

    return;
   } , m_code => [403]);

   my $res=$ua->get('url');

Также пробовал вариант в самом модуле
Код:
LWP::UserAgent::Determined
вызвать обработчик. Есть там обработчик
Код:
before_determined_callback
, и даже получилось так

Код:
$ua->before_determined_callback( sub {
$_[4][0]->headers->header('Token' => 'Value');
});

, хотя, этот же код почему-то до этого пару раз не срабатывал. НО, тут один минус, который все портит, не сообразил, как сделать так, чтобы заголовок добавлялся только к 403 кодам, а не ко всем запросам. То ли в модуле какой баг...
« Последнее редактирование: 17-07-2021 03:54 от perl6 » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines