我正在节点服务器上创建资源并将ETag附加到每个资源上.我正在使用此问题
What encoding should I use to properly generate an ETag with crypto in nodeJS?中的方法来生成ETag.但是,当我使用curl在命令行上执行HEAD请求时,如:
$curl -i -u username:password -X HEAD http://localhost:3000/aResource/0
答案是
HTTP/1.1 200 OK X-Powered-By: Express ETag: "1a37c148692f92ad6c97887f77c873e6" Content-Type: text/plain Date: Sat,26 Oct 2013 01:06:28 GMT Connection: keep-alive ^C $
我必须专门按Control-C才能再次看到命令提示符.另一方面,我发现这很奇怪,因为我处理HEAD请求的方式是通过节点上的app.head,在验证后我调用函数:
function serveResourceEtag(req,res) { console.log("Following route through HEAD"); var anID = parseInt(req.params[resourceID],"utf8"); if (anID < serverData.resourceEtags.length) { res.writeHead (200,{"ETag": "\"" + serverData.resourceEtags[anID] + "\"","Content-Type": "text/plain"}); res.end(); } else { res.writeHead (404,{"Content-Type": "text/plain"}); res.end(); } };
换句话说,即使我有res.end();命令到底,由于某种原因传输还没有停止.据我所知,HEAD请求应该获得与GET请求相同的标头.与GET的区别在于,在HEAD的情况下,我们没有GET请求的主体.你能说出这里似乎有什么问题吗?
解决方法
你对HTTP方法的行为是正确的,你想要的只是卷曲是错误的:
curl -I -u username:password http://localhost:3000/aResource/0
不是-X HEAD说的是使用HTTP的HEAD方法而不是仅返回标头的GET
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。