我一直在学习编写 HTML 和 javascript 代码,并且在使用 IP 地址访问页面时使用相对路径加载脚本和 css 时遇到了一个稍微令人困惑(并且非常令人沮丧的问题)。Chrome 30.0.1599.69 和 IE10 似乎都没有问题,但 Firefox 24 可以,而且只有在使用 IP 地址而不是名称时。
文件夹结构为:
Dashboard/index.html
Dashboard/css/dashboard.css
Dashboard/js/dashboard.css
Dashboard/leaflet/
etc
HTML 看起来像:
<!DOCTYPE html>
<html>
<head>
<title>Dashboard</title>
<meta charset="utf-8" />
<!-- css loading -->
<link rel="stylesheet" href="leaflet/leaflet.css" />
<link rel="stylesheet" href="css/dashboard.css" />
<!-- script loading -->
<script src="leaflet/leaflet.js"></script>
<script src="js/dashboard.js"></script>
<script src="d3.v3/d3.v3.js"></script>
</head>
<body>
etc...
http://localhost:8888/Dashboard/
在所有浏览器中(在浏览器栏中)通过 localhost(使用 python simpleHTTPServer)打开上述内容时效果很好。当我将 Dashboard 文件夹和子文件夹移动到C:\Inetpub\wwwroot\
Windows Server 2003/IIS 6.0 中的默认网页区域 ( ) 并尝试访问该页面时,它也可以正常工作 - 直到我使用 Firefox 使用 IP 地址尝试它。
例如,http://mywebpage/Dashboard/index.html
调出页面并正确加载所有 css、js 文件等。使用控制台我可以看到:
[10:57:32.081] GET http://mywebpage/Dashboard/css/dashboard.css [HTTP/1.1 200 OK 10ms]
当我尝试使用 IP 时(因为名称仅在我们的网络上解析,并且我想在外面显示页面)我在 Firefox 中收到以下错误:
[10:57:25.135] GET http://XXX.XXX.XXX.XXX/css/Dashboard.css [HTTP/1.1 404 Not Found 7ms]
不仅如此,Firefox 地址栏中的 URL 看起来也不同: XXX.XXX.XXX.XXX/Dashboard\index.html#
< 注意反斜杠并#
出现。
我在 Chrome 或 IE10 中没有这个问题。因此,当使用 IP 地址访问时,Firefox 看起来并不相对于 html 文档的路径,而是相对于服务器,而 Chrome 和 IE10 看起来确实相对于页面,无论使用名称或 IP。Firefox 还决定显示一个反斜杠并#
在末尾添加一个。
我发现使用文件夹名称对链接进行编码似乎确实可以解决 Firefox IP 地址问题,<link rel="stylesheet" href="Dashboard/leaflet/leaflet.css" />
但是它会弄乱 Chrome,因为文件夹名称无论如何都会添加到网络路径中(在控制台中看到) http://XXX.XXX.XXX.XXX/Dashboard/Dashboard/leaflet/leaflet.css
:。为什么 Firefox 会有这样的行为,为什么只在使用 IP 时?
-更新-
我已经在同事的机器上对此进行了测试,但令人沮丧的是,这种行为没有被复制,所以我开始认为我的 Firefox 安装有问题。
-更新2-
重新安装后,Firefox 的行为与 localhost、服务器名和对网页的 IP 访问一样。所以希望这将不再是一个问题!我仍在使用相对路径,前导“/”使其在服务器的根文件夹中查找并影响使用 localhost 进行调试。