首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Azure网站上获得RequireSSL in NodeJS?

如何在Azure网站上获得RequireSSL in NodeJS?
EN

Stack Overflow用户
提问于 2014-12-12 23:12:46
回答 1查看 101关注 0票数 0

因此,首先给出一点背景:在Azure网站中运行的NodeJS服务器将自动拥有所有HTTPS请求directed to the http endpoint。这允许以下代码同时适用于HTTP和HTTPS

代码语言:javascript
复制
var http = require('http');
var express = require('express');

var app = express();
// *snip*
http.createServer(app).listen(process.env.PORT);
// can go to http://*.azurewebsites.net or https://*.azurewebsites.net without issue

在这里,我决定创建一个"RequireSSL“中间件。

代码语言:javascript
复制
/* snip */
if (req.protocol === 'http') {
    var origFullUrl: string = 'http://' + req.get('host') + req.originalUrl;
    var u: url.Url = url.parse(origFullUrl, true);
    u.host = null; // nead to clear so 'port' is used
    u.protocol = 'https';
    u.port = '443';

    res.redirect(url.format(u));
}
/* snip */

这是背景的作用所在。因为Azure将所有HTTPS重定向到HTTP协议,所以req.protocol总是等于'http‘,从而创建了一个重定向循环。

有人知道让这个在Azure网站上工作的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-13 00:31:48

您可以使用x-arr-ssl报头检测到这一点。请看一下这个:https://coderead.wordpress.com/2014/09/05/redirecting-to-https-in-node-js-on-azure-websites/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27453581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档