gpt4 book ai didi

Node.js http 代理允许 HTTPS

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:52 25 4
gpt4 key购买 nike

我有一个应用程序,它创建代理服务器并在访问页面时返回 url 请求,但它仅适用于 http 网页,当我尝试访问 https 地址时,我会在浏览器中收到安全连接失败

为了解决这个问题,我从 here 生成了 localhost:8080 的自签名证书,但仍然无法访问 protected 网页...

这是我的代码:

var httpProxy = require('http-proxy');
var fs = require('fs');

var proxy = httpProxy.createServer({
ssl: {
key: fs.readFileSync('ssl_key_8080.pem', 'utf8'),
cert: fs.readFileSync('ssl_cert_8080.pem', 'utf8')
},
target:'https://localhost:8080',
secure: true
});

proxy.listen(443);

var http = require('http');

http.createServer(function (req, res) {
var options = {
target: 'http://' + req.headers.host,
};
req.host = req.headers.host;
proxy.web(req, res, options, function(err){
console.log('err', err)
});
}).listen(8080);

proxy.on('proxyReq', function (proxyReq, req, res) {
console.log('request url', JSON.stringify(req.url, true, 2));
});

是不是我哪里做得不对?我按照 http-proxy docs 的说明进行操作

最佳答案

问题是您有一个自签名证书,并且您正在使用文档中的代理设置对象中的安全标志

You can activate the validation of a secure SSL certificate to the target connection (avoid self signed certs), just set secure: true in the options.

    var proxy = httpProxy.createServer({
ssl: {
key: fs.readFileSync('ssl_key_8080.pem', 'utf8'),
cert: fs.readFileSync('ssl_cert_8080.pem', 'utf8')
},
target:'https://localhost:8080',
secure: true
});

如果您删除安全标志,您可能会在浏览器中收到一条错误消息,指出该路由不安全。

在您的代码上下文中。

var httpProxy = require('http-proxy');
var fs = require('fs');

var proxy = httpProxy.createServer({
ssl: {
key: fs.readFileSync('ssl_key_8080.pem', 'utf8'),
cert: fs.readFileSync('ssl_cert_8080.pem', 'utf8')
},
target:'https://localhost:8080'
});

proxy.listen(443);

var http = require('http');

http.createServer(function (req, res) {
var options = {
target: 'http://' + req.headers.host,
};
req.host = req.headers.host;
proxy.web(req, res, options, function(err){
console.log('err', err)
});
}).listen(8080);

proxy.on('proxyReq', function (proxyReq, req, res) {
console.log('request url', JSON.stringify(req.url, true, 2));
});

关于Node.js http 代理允许 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43932488/

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