为什么当host为0.0.0.0时,浏览器会尝试通过https获取文件?

Why does the browser try to get files through https when the host is 0.0.0.0?

我有一个由 create-react-app 创建的应用程序。 构建后,它会生成一个 html 文件,其中包含一些 JS 和 CSS 文件。 html 文件看起来像

<!doctype html>...<script src="/static/js/main.89f33fbb.chunk.js"></script></body></html>

我尝试通过 Express.js 服务器托管这些静态文件。

const app = express()
  .use(bodyParser.json())
  .use(express.static(path.join(__dirname, '../dist')))

app.listen(5000, '0.0.0.0');

当我尝试在浏览器中打开 http://127.0.0.1:5000 或 http://localhost:5000 时,加载整个页面没有问题。

但是,当我尝试打开 http://0.0.0.0:5000 时,它首先成功获取了 html 文件。但是,在下面的请求中,它试图通过https获取不存在的JS和CSS文件。

我知道 <script src="/static/js/main.89f33fbb.chunk.js"> 将首先尝试通过 https 获取文件,但如果不存在,我希望它通过 http.

获取文件

我在隐私模式下尝试了 Chrome、Firefox 和 Safari,结果都是一样的。

有没有哪里做错了?

您可以使用 0.0.0.0 监听任何地址,但您不应使用它发送请求,因为 0.0.0.0 是不可路由的元地址,用于指定无效、未知或不适用的地址目标。

在服务器上下文中,0.0.0.0 表示“本地计算机上的所有 IPv4 地址”。如果主机有两个 IP 地址,192.168.1.1 和 10.1.2.1,并且主机上的服务器 运行 侦听 0.0.0.0,则可以通过这两个 IP 访问它,但是如果您想访问服务器,您应该使用其中一个 IP。

看看: