0

在 NodeJs 应用程序上工作,我想欺骗浏览器以保持 http,最新版本的浏览器不断将其重定向到 https。

我知道它不推荐,但它仅适用于 PoC,因此不存在不安全通信的重大问题。

var port = 80;

server.listen(port, function () {
    console.log('webapp: listening at port %d', port);
});

    // Routing
    const currentDirectory = path.join(__dirname, '../', 'webapp');
    app
        .get('/', applyTemplate('index.html'))
        .get('/index.html', applyTemplate('index.html'))
        .use(express.static(currentDirectory))

我可以欺骗浏览器吗?处理 https 连接并将其重定向到 http 而不创建 ssl 证书。

4

1 回答 1

1

您需要使用 openssl 创建一个自签名证书,然后使用它。如果没有,现代浏览器会尝试通过阻止某些操作来保护您。这些检查非常重要,您应该知道它们的存在是为了编写正确且有效的代码。如果您开始更改浏览器行为,您可以轻松地在 HTTPS 和 HTTP 之间发送密码或敏感数据。我可以问你为什么要跳过这些检查吗?大多数时候,一个做得好的测试套件足以以正确的方式处理这些情况,并获得浏览器的正确响应。

我附上了一个示例,您可以在 => https://timonweb.com/posts/running-expressjs-server-over-https/找到

openssl req -nodes -new -x509 -keyout server.key -out server.cert
var express = require('express')
var fs = require('fs')
var https = require('https')
var app = express()

app.get('/', function (req, res) {
  res.send('hello world')
})

https.createServer({
  key: fs.readFileSync('server.key'),
  cert: fs.readFileSync('server.cert')
}, app)
.listen(3000, function () {
  console.log('Example app listening on port 3000! Go to https://localhost:3000/')
})
于 2020-05-19T15:32:12.920 回答