javascript - 当我更改提供 index.html 文件的方式时,哪些路径不起作用?
问题描述
我最近决定更新我提供 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 运行一些(至少在这种情况下,因为您没有使用*
或参数)并且该代码index.html
仅提供index.html
.
您的图像已停止工作,因为您删除了提供 HTML 的代码以及仅提供 HTML 的代码的图像。
我怎样才能解决这个问题?
将代码恢复原状。您所做的更改不合理。
————
然后解决您的安全问题。
如果您的 JS 模块所在的目录,则您提供静态文件的目录是父目录。这意味着您已经在 Web 服务器上提供了 JS 模块(可能还有所有 JS 模块)的 URL。
不要暴露您的服务器端业务逻辑。
更改目录结构。一个典型的例子是:
/ (containing the project)
/src/ (containing the JS)
/static/ (containing the static files)
推荐阅读
- powershell - 设置内容附加到其他文件
- plotly - 在 Axes 坐标之间添加标签
- python - 在 .xlsx 文件中创建新工作表
- spring - Kafka Stream:无法从 Kafka 持久 keyValue 状态存储中获取数据
- maven - Maven WebService 客户端依赖
- react-native - 用按钮反应本机打开抽屉
- json - 为什么我的 WordPress 域只能在没有 www 的情况下使用,而不能与 www 一起使用?
- java - 负数的 BigInteger 求幂失败
- python-3.x - 使用 Functools(部分)清除小部件。lambda会起作用吗
- ios - 将 3D 地球 scnnode 旋转到特定的 lat long swift