【问题标题】:Secure CookieSession when using iisnode使用 iisnode 时的安全 CookieSession
【发布时间】:2016-02-25 13:33:06
【问题描述】:

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

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

安全:一个布尔值,指示 cookie 是否仅通过 HTTPS 发送(HTTP 默认为 false,HTTPS 默认为 true)。

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

【问题讨论】:

    标签: node.js iis cookies session-cookies iisnode


    【解决方案1】:

    原因

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

    分辨率

    x-forwarded-proto 标头设置为“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)请求标头添加到 express 应用程序。

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

    先决条件

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

    【讨论】:

      猜你喜欢
      • 2013-05-04
      • 2012-12-14
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-30
      • 2013-03-08
      相关资源
      最近更新 更多