【发布时间】:2013-12-04 22:02:04
【问题描述】:
当我向我的服务器发出发布请求时出现此错误,但仅在我的生产服务器(预发布)上 - 我的登台服务器工作正常。两者都是 AWS ubuntu 盒子。
查看堆栈跟踪,错误的来源是一个 url 为 '../../css' 的 http 请求,然后 send.js 145 和 send.js 310 将其解释为恶意路径,导致服务器崩溃。但是,在 grepping 我的代码库之后,没有出现“../../css”。
我非常感谢任何人可以提供的任何帮助或见解,因为我发现的唯一类似的 SO 问题帮助我诊断了恶意路径问题,但没有帮助我了解 ../../css 的来源:
403 / Forbidden on favicon with NodeJS / Express
谢谢!
{
"date":"Wed Nov 20 2013 04:16:30 GMT+0000 (UTC)",
"process":{
"pid":10842,
"uid":0,
"gid":0,
"cwd":"/home/ubuntu/developer-getlocket",
"execPath":"/usr/bin/nodejs",
"version":"v0.10.21",
"argv":[
"nodejs",
"/home/ubuntu/developer-getlocket/app.js"
],
"memoryUsage":{
"rss":89632768,
"heapTotal":63371520,
"heapUsed":30075536
}
},
"os":{
"loadavg":[
0.0029296875,
0.0146484375,
0.04541015625
],
"uptime":2938975.002619042
},
"trace":[
{
"column":16,
"file":"/home/ubuntu/developer-getlocket/node_modules/express/node_modules/send/lib/send.js",
"function":"SendStream.error",
"line":145,
"method":"error",
"native":false
},
{
"column":52,
"file":"/home/ubuntu/developer-getlocket/node_modules/express/node_modules/send/lib/send.js",
"function":"SendStream.pipe",
"line":310,
"method":"pipe",
"native":false
},
{
"column":8,
"file":"[as handle] (/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/middleware/static.js",
"function":"Object.staticMiddleware",
"line":84,
"method":"staticMiddleware",
"native":false
},
{
"column":15,
"file":"/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/proto.js",
"function":"next",
"line":190,
"method":null,
"native":false
},
{
"column":5,
"file":"/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/middleware/logger.js",
"function":"Object.logger",
"line":156,
"method":"logger",
"native":false
},
{
"column":15,
"file":"/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/proto.js",
"function":"next",
"line":190,
"method":null,
"native":false
},
{
"column":7,
"file":"[as handle] (/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/middleware/favicon.js",
"function":"Object.favicon",
"line":77,
"method":"favicon",
"native":false
},
{
"column":15,
"file":"/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/proto.js",
"function":"next",
"line":190,
"method":null,
"native":false
},
{
"column":5,
"file":"/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/middleware/logger.js",
"function":"Object.logger",
"line":156,
"method":"logger",
"native":false
},
{
"column":15,
"file":"/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/proto.js",
"function":"next",
"line":190,
"method":null,
"native":false
}
],
"stack":[
"Error: Forbidden",
" at SendStream.error (/home/ubuntu/developer-getlocket/node_modules/express/node_modules/send/lib/send.js:145:16)",
" at SendStream.pipe (/home/ubuntu/developer-getlocket/node_modules/express/node_modules/send/lib/send.js:310:52)",
" at Object.staticMiddleware [as handle] (/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/middleware/static.js:84:8)",
" at next (/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/proto.js:190:15)",
" at Object.logger (/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/middleware/logger.js:156:5)",
" at next (/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/proto.js:190:15)",
" at Object.favicon [as handle] (/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/middleware/favicon.js:77:7)",
" at next (/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/proto.js:190:15)",
" at Object.logger (/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/middleware/logger.js:156:5)",
" at next (/home/ubuntu/developer-getlocket/node_modules/express/node_modules/connect/lib/proto.js:190:15)"
],
"req":{
"url":"/../../css",
"headers":{
"host":"developers.getlocket.com",
"accept-encoding":"gzip, deflate",
"accept":"*/*",
"cookie":"connect.sid=s%3A9_PUj6XZqF8HKRCoTqHPT5cJ.V2cxTaxk5sLlsNtAMByR7JpvtvwbuebOMZ6IgoEQLgI",
"connection":"keep-alive",
"accept-language":"en-us",
"user-agent":"Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7"
},
"method":"GET",
"httpVersion":"1.1",
**"originalUrl":"/../../css",**
"query":{
}
},
"level":"error",
"message":"middlewareError",
"timestamp":"2013-11-20T04:16:30.958Z"
}
【问题讨论】:
-
未设置为与 prod 机器相同的 pre-prod 机器完全浪费空间......
-
@TonyHopkinson 最近几个小时,我完全明白为什么。通过卸载并重新安装 nodemodules 解决了这个问题
-
这个错误出现的频率令人惊讶,几乎和我认为我的备份会恢复错误一样频繁。有一次自己被抓到了。想象一下,如果它只是在发布后才曝光......
标签: javascript node.js express middleware