2015-11-23 4 views
1

Я использую узел с IIS с помощью iisnode, и у меня возникают проблемы с настройкой опции CookieSession secure:true.Безопасное CookieSession при использовании iisnode

Я использую HTTPS в IIS, и я перенаправляю любой HTTP на HTTPS. Но даже при этом, если я установил опцию CookieSessionsecure:true, сессия не будет иметь никакого содержимого после входа в систему.

безопасным: логическое значение, указывающее, является ли только куки для отправки через HTTPS (ложь по умолчанию для HTTP, правда, по умолчанию для HTTPS).

Я вынужден использовать secure:false, чтобы заставить его работать. Почему это?

ответ

3

ПРИЧИНА

iisnode прокси запросы от IIS для вашего приложения узла запуска экспресс. Соединение ssl прекращается в IIS, и ваше приложение-узел получает HTTP-запрос. Когда приложение требует файлов cookie через безопасное соединение, cookieSession и express-session не будут устанавливать cookie.

РЕЗОЛЮЦИЯ

Вы должны сказать Экспресс, что он может доверять прокси, когда заголовок x-forwarded-proto установлен на «https».

Вы можете сделать это, либо добавив прокси: правда конфигурации

app.use(express.session({ 
    proxy : true, 
    secret: 'your-secret-key', 
    cookie: { 
    secure: true 
    }    
})); 

Или вы можете сказать Экспресс доверять прокси глобально:

app.set('trust proxy', 1) 

Также установлено enableXFF к истинно в вашей сети. конфигурации. Это делает iisnode добавлять заголовки запроса x-forwarded-protox-forwarded-for) в экспресс-приложение.

<configuration> 
    <system.webServer> 

    <!-- ... --> 

    <iisnode enableXFF="true" /> 

    </system.webServer> 
</configuration> 

НЕОБХОДИМОЕ УСЛОВИЕ

iisnode должно быть по крайней мере, версия 0.2.11 иметь enableXFF конфигурации добавить x-forwarded-proto запрос HTTP заголовков. Вы можете проверить, какая версия iisnode у вас есть, посмотрев на свойства вашего файла iisnode.dll, вероятно, установленного в C:\Program Files\iisnode. Если это < 0.2.11, просто скачайте последнюю версию с любого из ссылок для скачивания here. После установки он скажет вам, что вам нужно перезагрузить сервер. Могу вам сказать, что достаточно команды iisreset (в увеличенном окне cmd).