我在Azure网站上的IIS中部署了Node.js服务器,我想阻止或重定向http请求。我socket.io在我的服务器上使用Express + www.example.com。
我找到了两种方法来做到这一点:
1.在实际的socket.io代码中通过将allowRequest参数传递给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方法,我不知道为什么。
1.将规则添加到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访问。
接下来我可以尝试什么?
2条答案
按热度按时间w8rqjzmb1#
使用Kudu Console,在
d:\home\site
文件夹中创建一个applicationhost.xdt
文件,包含以下内容:然后删除你添加到web.config中的任何内容。这应该能行
xa9qqrwz2#
这对我在Azure中的Node Web应用程序起作用...
https://stpdev.wordpress.com/2015/09/23/force-https-redirection-for-nodejs-apps-hosted-in-azure/