多个虚拟主机在 Chrome 上工作,但不是 Firefox 或 Safari

Posted

技术标签:

【中文标题】多个虚拟主机在 Chrome 上工作,但不是 Firefox 或 Safari【英文标题】:multiple vhosts working on Chrome, but not Firefox or Safari 【发布时间】:2019-07-20 06:00:03 【问题描述】:

我使用express 和vhost 在同一个端口上设置多个服务器,每个服务器都有不同的子域。每个服务器对应于我的文件系统上的一个本地目录。他们只需要提供静态文件。

~/repos/server/app.js:

const fs = require('fs')
const path = require('path')

const express = require('express')
const vhost   = require('vhost')

const app = express()
const PORT = 9000
const virtual_hosts = require('./virtual-hosts.json') // see below

app.use(express.static(path.join(__dirname, '../')))

virtual_hosts.forEach((vh) => 
    var vh_app = express()
    vh_app.use(express.static(path.join(__dirname, '../', vh.path)))
    app.use(vhost(vh.domain, vh_app))
)

app.listen(PORT, () => 
    console.log(`
        Listening at http://localhost:$PORT/
        Press ctrl + c to stop.
    `)
    console.log('...')
)

~/repos/server/virtual-hosts.json:

[
     "domain": "repo1.localhost", "path": "./repo1/" ,
     "domain": "repo2.localhost", "path": "./repo2/" ,
     "domain": "repo3.localhost", "path": "./repo3/" 
]

运行node ~/repos/server/app.js 后,网址http://localhost:9000/repo1/index.html 在所有3 种浏览器中都可以使用,但http://repo1.localhost:9000/index.html 仅在Chrome 中有效,而在Firefox 或Safari 中无效。

我的代码有问题,还是我需要更改一些浏览器设置?

【问题讨论】:

更新:我找到了这个,但不确定它是否有帮助:support.mozilla.org/en-US/questions/1011327 【参考方案1】:

有点晚了,但是对于提出相同问题的人来说。

您不能在“localhost”的 windows 上使用子域。我不知道 chrome 是如何处理它的,但正常的行为是你不能这样做。

如果您仍想存档,请查看this。

【讨论】:

以上是关于多个虚拟主机在 Chrome 上工作,但不是 Firefox 或 Safari的主要内容,如果未能解决你的问题,请参考以下文章

在 FF 和 Chrome(但不是 Safari)中单击几次后,jQuery animate scrollLeft 停止工作

@media 打印在 Chrome 中无法正常工作

选项卡单击可在 chrome 上工作,但不能在 Firefox 上工作

Cordova - 为啥 $http get 请求在 android 设备上失败但在 chrome 上工作

动画在 FF 和 IE 上冻结,但不是 Chrome

Tomcat 9 配置多个虚拟主机与HTTPS证书