gpt4 book ai didi

node.js - 使用 iisnode 时保护 CookieSession

转载 作者:搜寻专家 更新时间:2023-11-01 00:23:18 24 4
gpt4 key购买 nike

我通过使用 iisnode 将 Node 与 IIS 一起使用我在设置 CookieSession 选项 secure:true 时遇到问题。

我在 IIS 上使用 HTTPS,并将任何 HTTP 重定向到 HTTPS。但即便如此,如果我设置 CookieSession选项secure:true,登录后 session 将没有任何内容。

secure: a boolean indicating whether the cookie is only to be sent over HTTPS (false by default for HTTP, true by default for HTTPS).

我不得不使用 secure:false 来让它工作。这是为什么?

最佳答案

原因

iisnode 将来自 IIS 的请求代理到运行 express 的 Node 应用程序。 SSL 连接在 IIS 处终止,您的 Node 应用程序收到一个 http 请求。当应用程序需要通过安全连接使用 cookie 时,cookieSessionexpress-session不会设置 cookie。

决议

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

你可以通过添加代理来做到这一点:真正的配置

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(和 x-forwarded-for)请求 header 添加到 express 应用程序。

<configuration>
<system.webServer>

<!-- ... -->

<iisnode enableXFF="true" />

</system.webServer>
</configuration>

先决条件

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

关于node.js - 使用 iisnode 时保护 CookieSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33871133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com