首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Express res.sendfile抛出禁止错误

Express res.sendfile抛出禁止错误
EN

Stack Overflow用户
提问于 2013-01-30 07:37:25
回答 3查看 75.8K关注 0票数 180

我有这样的代码:

代码语言:javascript
运行
复制
res.sendfile( '../../temp/index.html' )

但是,它会抛出以下错误:

代码语言:javascript
运行
复制
Error: Forbidden
at SendStream.error (/Users/Oliver/Development/Personal/Reader/node_modules/express/node_modules/send/lib/send.js:145:16)
at SendStream.pipe (/Users/Oliver/Development/Personal/Reader/node_modules/express/node_modules/send/lib/send.js:307:39)
at ServerResponse.res.sendfile (/Users/Oliver/Development/Personal/Reader/node_modules/express/lib/response.js:339:8)
at exports.boot (/Users/Oliver/Development/Personal/Reader/server/config/routes.js:18:9)
at callbacks (/Users/Oliver/Development/Personal/Reader/node_modules/express/lib/router/index.js:161:37)
at param (/Users/Oliver/Development/Personal/Reader/node_modules/express/lib/router/index.js:135:11)
at pass (/Users/Oliver/Development/Personal/Reader/node_modules/express/lib/router/index.js:142:5)
at Router._dispatch (/Users/Oliver/Development/Personal/Reader/node_modules/express/lib/router/index.js:170:5)
at Object.router (/Users/Oliver/Development/Personal/Reader/node_modules/express/lib/router/index.js:33:10)
at next (/Users/Oliver/Development/Personal/Reader/node_modules/express/node_modules/connect/lib/proto.js:199:15)

有人能告诉我为什么会这样吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-30 07:52:22

我认为这是因为相对路径;"../“被认为是恶意的。首先解析本地路径,然后调用res.sendfile。您可以提前使用path.resolve解析路径。

代码语言:javascript
运行
复制
var path = require('path');
res.sendFile(path.resolve('temp/index.html'));
票数 320
EN

Stack Overflow用户

发布于 2016-02-10 03:45:28

Express documentation建议使用一种不同的方法,在我看来,它比当前的解决方案更有意义。

res.sendFile('index.html', {root: './temp'});

根选项似乎将./设置为项目的根目录。所以我不能完全知道你的文件相对于项目根目录的位置,但是如果你的临时文件夹在那里,你可以设置./temp作为你要发送的文件的根目录。

票数 34
EN

Stack Overflow用户

发布于 2021-05-22 16:59:24

此外,您还可以使用path.join

代码语言:javascript
运行
复制
const path = require("path");

router.get("/", (req, res) => {
  let indexPath = path.join(__dirname, "../public/index.html");
  res.sendFile(indexPath);
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14594121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档