node.js - Express res.sendfile 抛出禁止错误

标签 node.js express

我有这个代码:

res.sendfile( '../../temp/index.html' )

但是,它会抛出这个错误:

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)

谁能告诉我为什么会这样?

最佳答案

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

var path = require('path');
res.sendFile(path.resolve('temp/index.html'));

关于node.js - Express res.sendfile 抛出禁止错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14594121/

相关文章:

javascript - 提供 500 个内部服务器的 Express 路线

node.js - Express 和 Socket.io - 最佳实践

node.js - 从socket.on()内部调用外部函数

javascript - 如何在 Node js 应用程序中执行 jar 文件

java - 无法解密 Node 中使用 AES-GCM-256 在 Java 中加密的数据

node.js - 如何提高以编程方式发送图像的速度

node.js - 无法验证 Node.js 中的第一个证书

javascript - 如何从 Express Req 对象中删除 header ?

javascript - ImmutableJS fromJS() 和 Map() "ownerID"不匹配

javascript - 为什么 http-auth 不能与 express.static 中间件一起使用?