Сессионные куки с Mojolicious на IIS

Начальный пост

Я написал о своей проблеме на форуме Mojolicious, но все еще ищу решение.

По разным причинам я пытаюсь заставить некоторые приложения Mojolicious, которые я написал, работать на IIS. У меня есть серверы 7.5 (2k8r2) и 8.5 (2k12r2) для тестирования.

Настройка IIS очень проста. Я создал новое приложение на веб-сайте по умолчанию, указал его на код, добавил отображение обработчика Perl и добавил документ по умолчанию. Путь к сайту http://server.example.com/sessiontest/

После настройки и запуска сайта все работает как положено, за исключением того, что сеансы не работают. Я написал тестовое приложение для тестирования. В начале скрипта я настраиваю сессию:

# Setup sessions
app->secrets(['SessionTest']);
app->sessions->cookie_name('sessiontest');

Установка переменной сеанса:

get '/set' => sub {
 my $c = shift;

 $c->session(testvar => 1);
 $c->redirect_to('/');
};

И тестирование, чтобы увидеть, существует ли оно с помощником:

helper testvar => sub {
 my $c = shift;

 if($c->session('testvar')) {
  return 1;
 }

 return undef;
};

Когда я запускаю код с Morbo на любом сервере, он работает нормально и сеансы работают. Но под IIS я ничего не получаю.

Одно из предложений, которое я получил, было посмотреть на домен cookie и путь к cookie. В качестве теста я попытался установить тестовое имя домена в файле hosts сервера и клиента для IP-адресов серверов по адресу test.example.com, Я их добавил:

app->sessions->cookie_domain('.example.com');
app->sessions->cookie_path('/sessiontest');

Я предполагаю cookie_path должно быть '/', что я также попытался без удачи.

Любая помощь будет оценена!

IIS Config

Это недавно установленная коробка W2k12R2 под управлением IIS 8.5. У меня установлен ActivePerl 5.24. Конфиг настолько прост, насколько я могу получить. Вот шаги, которые я предпринял, чтобы настроить IIS.

  • Установить IIS с поддержкой CGI
  • Скопируйте тестовое приложение в C:\Code\sessiontest\
  • С веб-сайта по умолчанию -> Добавить приложение
  • Псевдоним: сессионный тест, Физический путь: C:\Code\sessiontest\
  • Выберите сессионное приложение
  • Добавьте сопоставление обработчика для *.pl в C:\Perl64\bin\perl.exe "%s" %s
  • Добавить документ по умолчанию для app.pl

Выход из скручивания

Результат от curl к серверу IIS.

curl -I http://server.example.com/sessiontest/app.pl/set
HTTP/1.1 200 OK
Content-Length: 160
Content-Type: text/html;charset=UTF-8
Server: Microsoft-IIS/7.5
[Thu Aug  3 19: 49:38 2017] [debug] HEAD "/"
[Thu Aug  3 19: 49:38 2017] [debug] Routing to a callback
[Thu Aug  3 19: 49:38 2017] [debug] Rendering template "index.html.ep" from DATA section
[Thu Aug  3 19: 49:38 2017] [debug] Rendering template "layouts/default.html.ep" from DATA section
[Thu Aug  3 19: 49:38 2017] [debug] 200 OK (0.002271s, 440.335/s)
Date: Thu, 03 Aug 2017 23:49:38 GMT

По сравнению с результатом бега от Морбо

curl -I http://server.example.com:3000/set
HTTP/1.1 302 Found
Content-Length: 0
Date: Thu, 03 Aug 2017 23:51:29 GMT
Location: /
Server: Mojolicious (Perl)
Set-Cookie: sessiontest=eyJleHBpcmVzIjoxNTAxODA3ODg5LCJ0ZXN0dmFyIjoxfQ----96063fca63a3457e89becc55d7df39898466bb99; expires=Fri, 04 Aug 2017 00:51:29 GMT; path=/; HttpOnly

Я установил режим производства, и теперь я подхожу к IIS.

curl -I http://server.example.com/sessiontest/app.pl/set
HTTP/1.1 200 OK
Content-Length: 160
Content-Type: text/html;charset=UTF-8
Server: Microsoft-IIS/7.5
Date: Fri, 04 Aug 2017 00:04:30 GMT

0 ответов

Другие вопросы по тегам