我正在尝试通过 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。
谢谢大家! :)
最佳答案
如果您安装了谷歌浏览器,您可以看到发送给谷歌的确切获取请求。这是我的样子:
GET https://www.google.com/ HTTP/1.1
:host: www.google.com
accept-charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
accept-encoding: gzip,deflate,sdch
accept-language: en-US,en;q=0.8
user-agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17
:path: /
accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
:version: HTTP/1.1
cache-control: max-age=0
cookie: <lots of chars here>
:scheme: https
x-chrome-variations: CMq1yQEIjLbJAQiYtskBCKW2yQEIp7bJAQiptskBCLa2yQEI14PKAQ==
:method: GET
乍一看,我可以看到 chrome 正在将请求发送到 https://www.google.com,而你正在发送到 http://www .google.com
还有一点就是你正在使用“\n”,你需要使用“\r\n”,并且请求必须以“\r\n\r\n”结尾。
如果您仍然无法获得任何响应,请尝试使用 http://77.214.52.152/
而不是 http://google.com
。
关于javascript - NodeJS - TCP - 发送 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14417617/