【发布时间】:2013-01-03 06:24:15
【问题描述】:
我正在尝试通过 TCP 套接字发送 HTTP 请求。
但我根本没有收到来自 www.google.com 的任何回复。不知道我做错了什么。
代码如下:
var client, net, raw_request;
net = require('net');
raw_request = "GET http://www.google.com/ HTTP/1.1\nUser-Agent: Mozilla 5.0\nhost: www.google.com\nCookie: \ncontent-length: 0\nConnection: keep-alive";
client = new net.Socket();
client.connect(80, "www.google.com", function() {
console.log("Sending request");
return client.write(raw_request);
});
client.on("data", function(data) {
console.log("Data");
return console.log(data);
});
希望有人可以帮助我。
澄清一下...请求缺少两个结尾换行符,并且所有换行符都必须采用 /r/n 的格式。
谢谢大家! :)
【问题讨论】:
-
为什么按照规范要求发送
\n而不是\r\n?您还需要通过发送两个\r\n来完成请求。您想手动构建请求还是可以使用http.request()代替? -
只是想写一些使用 TCP 套接字的 HTTP 请求来学习新东西。
-
@bryanmac 感谢您的链接。但真的很想在较低的层次上学习如何做到这一点。
-
@RadiantHex 那么你应该开始研究 RFC 2616,尤其是 section 5, Request,如何构造有效的 HTTP 消息。
标签: javascript node.js http networking tcp