使用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框中)就足够了。