gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 23:24:47 29 4
gpt4 key购买 nike

我正在使用 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/

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