Mojolicious, работающий на Raspberry Pi, отправляет пустые сеансы в Safari на iPhone

Я пишу Perl-сервер для своей церкви, используя Mojolicious::Lite, который будет работать на Raspberry Pi 2. Я написал программное обеспечение на своем ноутбуке с Linux Mint и попутно тестировал его на Raspberry Pi. Моим последним дополнением был простой экран входа в систему, который сохраняет аутентификацию в сеансе. Он отлично работает на ноутбуке, и к нему можно получить доступ из Firefox и Chrome в Linux, а также из Chrome и Safari с моего iPhone. Когда тот же код работает на Raspberry, он работает для всего, кроме Safari на iPhone. Safari показывает 0-байтовый файл cookie в меню «Настройки» -> «Safari» -> «Дополнительно» -> «Данные веб-сайта». Одна и та же версия Mojolicious работает как на ноутбуке, так и на Raspberry (6.14). Я получаю те же результаты с простым примером в Mojolicious::Guides::Tutorial, который увеличивает счетчик. При использовании браузера Safari iPhone для просмотра счетчика на ноутбуке счетчик увеличивается, а сохраненный файл cookie составляет 0,2 КБ, но при просмотре того же кода, работающего на Raspberry, счетчик никогда не увеличивается, а файл cookie равен 0 байт. Вот пример кода:

use Mojolicious::Lite;

# Access session data in action and template
get '/counter' => sub {
  my $c = shift;
  $c->session->{counter}++;
};

app->start;
__DATA__

@@ counter.html.ep
Counter: <%= session 'counter' %>

На моем ноутбуке я использую Linux Mint с Perl 5.18.2 и Mojolicious 6.14. На Raspberry я использую Raspbian Wheezy с Perl 5.14.2 (последний доступный с архивами по умолчанию при выполнении apt-get) и Mojolicious 6.14. Любая помощь, которую вы могли бы предложить в получении этой работы, будет принята с благодарностью. Спасибо! Гарри


person Garry Taylor    schedule 06.10.2015    source источник
comment
вы можете попробовать MOJO_DAEMON_DEBUG=1 morbo script/yourappname, чтобы узнать, правильно ли он печатает Set-Cookie и т. д. в Safari. не могу больше комментировать, так как у меня нет Raspberry Pi   -  person Fayland Lam    schedule 06.10.2015


Ответы (1)


Ну, я нашел проблему и решил ее. Это были не разные версии Mojolicious, разные версии Perl, разные модули или разные библиотеки. Проблема заключалась в том, что когда я настраивал Raspberry в прошлом месяце, я не тратил время на настройку ntpd. Поэтому, когда на прошлой неделе отключилось электричество, время не сбрасывалось должным образом, когда Raspberry снова запускалась. Перепробовав много-много всего, сегодня утром я заметил, что указанное время отличается примерно на 2 1/2 часа. Сброс часов вернул мир в нормальное русло. По-видимому, браузер Safari просматривал входящий файл cookie, видя, что срок его действия (сейчас + 1 час) уже в прошлом, и, поскольку срок его действия истек, не сохранял его. Во всяком случае, это то, что потребовалось, чтобы решить проблему, и я чувствую себя довольно глупо, не поймав ее раньше. Спасибо за вашу помощь.

person Garry Taylor    schedule 06.10.2015