javascript - Express (node.js) 使用 HTTPS 和 HTTP

标签 javascript node.js http https express

我正在使用 node.js 上的 express (3.0) 框架来路由我的应用程序。

我的大多数应用程序都使用 http 协议(protocol),但是我只想通过 https 提供一个特定的路由。这是我的 API 中负责注册和验证用户的部分。

例如:

app.get('/connect', function(req, res){
 // Must be on HTTPS, if not redirect to HTTPS
});

app.post('/connect', function(req, res){
  // Must be on HTTPS
});

app.get('/', function(req, res){
 // Must be on HTTP
});

app.get('/build', function(req, res){
 // Must be on HTTP
});

如何促进在同一个应用程序中同时使用两者?我正在努力寻找这样的例子。

最佳答案

只需将您的 app(它实际上是一个请求处理函数)传递给 httphttpscreateServer >.

var express = require('express')
    , http = require('http')
    , https = require('https')
    , app = express();

http.createServer(app);
https.createServer({ ... }, app);

HTTP 和 HTTPS 请求都通过同一个 Express 应用进行路由。在路由处理程序中,要检查是否通过 https 发出请求,请使用 req.secure

app.get('/route', function(req, res) {
    if (req.secure) {
        ...
    } else {
        res.redirect(301, 'https://example.com/route');
    }
});

作为旁注,现代智慧认为混合 http/https 网站不安全。您可以通过要求用户通过 SSL 登录来保护用户的密码,但随后切换回 http 进行后续请求会使其成为 trivial让攻击者窃取用户的登录 cookie。

考虑由登录用户通过 SSL 发出所有请求。

关于javascript - Express (node.js) 使用 HTTPS 和 HTTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18250134/

相关文章:

HTTP 与 TCP/IP,将数据发送到 Web 服务器

node.js - Node : Static imports possible?

node.js - 如何在执行 Paypal 付款后重定向?

http - 是否有 HTTP 请求 header 指示浏览器需要低带宽或低功耗版本的网页?

javascript - 什么是 AMP HTML,它如何适应框架/工具 X?

javascript - 如何在嵌入数据上调用鼠标函数?

javascript - 我正在编写代码进行在线测试,在自动提交时遇到问题

javascript - 表单验证 - 如何使用 If 和 Else If

node.js - 从 Angular 6 应用程序向 Elasticsearch 发送 get 请求时出现 CORS 错误,即使允许

node.js - HTTP 响应字符串末尾的奇怪字符