问题描述
我最近决定更新我提供 index.html 文件的方式
app.use('/',express.static(__dirname + '/..'));
到
app.get('/',function(req,res) {
res.sendFile(path.join(__dirname + '/../index.html'));
});
两者都可以正常工作,因为它们都可以正确地为我的 index.html 文件提供服务。但是,当我切换到使用 app.get
...
我无法再在 index.html 文件中使用我的路径。
例如,我的 index.html 文件中有一个 .svg 文件,其作用如下:
<img src="dist/images/svg/favicon.svg" width="128" height="128">
现在失败的请求(404 错误)在控制台中看起来像这样:
http://localhost:3000/dist/images/svg/favicon.svg
我尝试在根目录中添加如下:
<img src="ll-server/dist/images/svg/favicon.svg" width="128" height="128">
但这无济于事 - 两者都会给出 404 错误。
为什么更改我提供 index.html 文件的方式会破坏我在 index.html 文件中的路径?
我该如何解决这个问题?
解决方法
为什么更改我提供 index.html 文件的方式会破坏我在 index.html 文件中的路径?
use
为每个以指定路径开头的 URL 运行一些代码。该代码 (static
) 查看 URL,在指定路径上找到匹配的文件,并提供该文件。
get
为特定 URL 运行一些 for(至少在这种情况下,因为您没有使用 *
或参数)并且该代码提供 index.html
并且仅 {{ 1}}。
您的图片已停止工作,因为您删除了提供 HTML 的代码以及仅提供 HTML 代码的图片。
我该如何解决这个问题?
将代码恢复原样。您所做的更改不合理。
——-
然后解决您的安全问题。
如果您的 JS 模块所在的目录,您提供静态文件的目录就是父目录。这意味着您已经在您的网络服务器上提供了您的 JS 模块(可能还有您所有的 JS 模块)的 URL。
不要暴露您的服务器端业务逻辑。
更改您的目录结构。一个典型的是:
index.html