大家好,谢谢您的答复。我有一个由nodejs提供服务的网站,我正在监听http的端口300和https的443:
const fs = require('fs');
const https = require('https');
const http = require('http');
const app = require('../app');
const env = require(`../environment/${process.env.NODE_ENV}`);
const httpServer = http.createServer((req, res) => {
res.writeHead(301, { Location: `https://${req.headers.host.split(':')[0] + ':' + env.portHttps}${req.url}` });
res.end();
}).listen(env.portHttp);
const options = {
key: fs.readFileSync(env.key),
cert: fs.readFileSync(env.cert),
};
const httpsServer = https.createServer(options, app).listen(env.portHttps);这段代码来自一个教程,我想我不太理解它,因为我希望我的站点调用localhost:300或localhost:443,每次,google上的请求都重定向到https://localhost/,我不明白为什么。
所以很好但我想知道为什么重定向是因为..。那么为什么要调用.listen(端口)呢?
PS:我有一个带有代理的有角度的应用程序启动:
{
"/": {
"target": "https://localhost",
"changeOrigin": true,
"secure": false
}
}我知道这个代理的目的,我只想知道为什么会发生重定向,而我所遵循的教程并没有解释这一点。
发布于 2022-10-01 17:31:27
您正在端口80上创建一个301 HTTP Redirect服务器,并将一个301 HTTP Redirect发送回所有请求。这些重定向工作的方法是返回状态代码301和header Location,其中包含您希望浏览器访问的位置。因此,当您访问http://localhost/abc时,您会收到301, Location: https://localhost/abc,浏览器会带您到那里。
在dev工具中,如果您转到网络选项卡并启用“保存日志”,您应该会看到重定向和实际的应用程序页面加载。
const httpServer = http.createServer((req, res) => {
// 301 is the http status code
// Location: ... is the header which contains where to go to
res.writeHead(301, { Location: `https://${req.headers.host.split(':')[0] + ':' + env.portHttps}${req.url}` });
res.end();
}).listen(env.portHttp);在文件的底部设置https服务器,该服务器侦听端口443并为应用程序提供服务。
发布于 2022-10-19 16:23:14
所有此类安全(TLS)传输都使用端口443完成,端口443是HTTPS通信量的标准端口。因此,当浏览器识别443端口时,它会显示https安全锁(绿色),301是http重定向到所有请求,这是响应状态代码。
https://stackoverflow.com/questions/73920381
复制相似问题