gpt4 book ai didi

node.js - 在 Azure 网站上的 Node.js 服务器中强制执行 HTTPS 请求

转载 作者:行者123 更新时间:2023-12-03 05:07:50 25 4
gpt4 key购买 nike

我在 Azure 网站的 IIS 中部署了 Node.js 服务器,并且我想阻止或重定向 http 请求。我在我的服务器中使用 Express + socket.io。

我找到了两种方法:

  1. 在实际的 socket.io 代码中 passing allowRequest parameter到socket.io。所以我的代码将如下所示:

    var checkRequest = function (req, fn) {
fn(err, true);
};

var ioOptions = {
pingInterval: socketPingInterval,
pingTimeout: socketPingTimeout,
path: "/" + config.API_VERSION + "/socket.io",
allowRequest : checkRequest
};

_socketListener = io.listen(server, ioOptions);

问题是代码永远不会进入 checkRequest 方法,我不知道为什么。

  • 将规则添加到 web.config 文件。我检查了几个论坛,每个人都说如果我添加此代码:
  • <rule name="RedirecttoHTTPS">
    <match url="(.*)" />
    <conditions>
    <add input="{HTTPS}" pattern="off" ignoreCase="true" />
    <add input="{URL}" pattern="/$" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    </conditions>
    <action type="Redirect" url="https://{SERVER_NAME}/{R:1}" redirectType="SeeOther" />
    </rule>

    它将我的 hpt 请求重定向到 HTTPS。但它仍然有效,我可以通过 HTTP 访问。

    接下来我可以尝试什么?

    最佳答案

    使用Kudu Console ,在 d:\home\site 文件夹中创建一个 applicationhost.xdt 文件,其中包含以下内容:

      <rewrite xdt:Transform="InsertIfMissing">
    <rules xdt:Transform="InsertIfMissing">
    <rule name="Force HTTPS" enabled="true" stopProcessing="true">
    <match url="(.*)" ignoreCase="false" />
    <conditions>
    <add input="{HTTPS}" pattern="off" />
    <add input="{WARMUP_REQUEST}" pattern="1" negate="true" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
    </rule>
    </rules>
    </rewrite>
    </system.webServer>

    并删除您添加到 web.config 中的所有内容。这应该可行。

    关于node.js - 在 Azure 网站上的 Node.js 服务器中强制执行 HTTPS 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35930190/

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