使用iisnode时保证CookieSession的安全

我通过使用iisnode与IIS使用节点,我有麻烦设置CookieSession选项secure:true

我在IIS上使用HTTPS,并将任何HTTPredirect到HTTPS。 但即使如此,如果我将cookieSession选项设置为secure:true ,那么login后会话将不会有任何内容。

secure:一个布尔值,指示cookie是否仅通过HTTPS发送(默认情况下为HTTP,HTTPS为默认情况下为true)。

我不得不使用secure:false来使其工作。 为什么?

原因

iisnode代理请求从IIS到您的节点应用程序运行快车。 ssl连接在IIS处终止,并且您的节点应用程序收到一个http请求。 当应用程序通过安全连接需要cookie时, cookieSession和express-session将不会设置cookie。

parsing度

您需要告诉Express,当x-forwarded-proto头设置为“https”时,它可以信任代理。

您可以通过添加代理:true config来完成此操作

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

或者你可以告诉Express全球信任代理:

 app.set('trust proxy', 1) 

在你的web.config中设置enableXFF为true。 它使iisnode将x-forwarded-proto forward x-forwarded-proto (和x-forwarded-for )请求头添加到快速应用程序。

 <configuration> <system.webServer> <!-- ... --> <iisnode enableXFF="true" /> </system.webServer> </configuration> 

PREREQUISITE

iisnode至less需要0.2.11版本才能让enableXFF config添加x-forwarded-proto请求的HTTP头文件。 您可以通过查看可能安装在C:\Program Files\iisnode中的iisnode.dll文件的属性来检查您的iisnode.dll C:\Program Files\iisnode 。 如果<0.2.11,只需从这里的任何下载链接下载最新的。 安装后,它会告诉你,你需要重新启动你的服务器。 我可以告诉你,一个iisreset命令(在一个提升的cmd框中)就足够了。