JavaScript 一个意外的 HEAD 请求的结果

simsicon · 2013年04月29日 · 最后由 simsicon 回复于 2013年05月01日 · 3177 次阅读

我有一个用 node.js api 写的服务端和客户端,当我尝试从客户端发起一次 HEAD 请求的时候,会得到一个错误,

{ [Error: socket hang up] code: 'ECONNRESET' }

同时发起一个 PUT 请求就不会有这样的问题,参数都一样,我把相关的代码和资料都放到了这个gist 欢迎评论!谢谢

P.S 虽然是一个 node 问题,但我发现 ruby-china 还是比隔壁某 node 社区要活跃很多啊。

首先是res.end得改成res.end() .... 我总觉得这个是 ruby 写久了到 coffee 里面爱掉的坑.. 然后是req.write '0\r\n\r\n'得放 response 事件回调里面才能行吧

#1 楼 @krazy

谢谢

res.end 或者 res.end() 这个确实没注意,不过似乎并不影响结果,修复了还是有这个问题。

req.write '0\r\n\r\n' 是放在那里,不然的话怎么发起请求呢?

问题是同样的参数的 PUT 请求就没有这样的情况,仅仅是请求的 METHOD 不一样就出现这个问题很奇怪。

#2 楼 @simsicon 噢 这样 我错了.. 不发出请求倒是可以,囧。。 这个帖子似乎提供了解决方案..用 domain 模块包住然后 handle error... 不知道有没有帮助 .. http://clock.co.uk/tech-blogs/preventing-http-raise-hangup-error-on-destroyed-socket-write-from-crashing-your-nodejs-server

#3 楼 @krazy 谢谢,的确是一个思路,我来试试。

HEAD 请求 body 应该为空,把 res.write '\n' 去掉。

#5 楼 @doitian 的确是这样。谢谢你!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号