NodeJS - TCP - 发送HTTP请求

19 浏览
0 Comments

NodeJS - TCP - 发送HTTP请求

我正在尝试通过TCP套接字发送HTTP请求。\n但是我根本没有从www.google.com收到任何响应。不知道我做错了什么。\n


\n这是代码:\n

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("正在发送请求");
  return client.write(raw_request);
});
client.on("data", function(data) {
  console.log("数据");
  return console.log(data);
});

\n


\n希望有人能帮助我。\n


\n只是为了澄清...请求缺少两个结束换行符,并且所有换行符必须以/r/n的格式。谢谢大家! 🙂

0
0 Comments

问题的出现原因:发送的HTTP请求格式不正确,缺少换行符。此外,使用绝对URI是与代理服务器正常工作的唯一方式。

解决方法:在发送HTTP请求时,需要确保请求格式正确,并且在请求末尾添加两个换行符。对于与代理服务器的通信,可以使用HOST头来确保正常工作。另外,还需要确保使用正确的HTTP版本(如HTTP/1.1)。

以下是代码示例:

const net = require('net');
const client = net.createConnection({ host: 'www.google.com', port: 80 }, () => {
  client.write('GET http://www.google.com/ HTTP/1.1\r\n');
  client.write('Host: www.google.com\r\n');
  client.write('\r\n\r\n');
});
client.on('data', (data) => {
  console.log(data.toString());
});
client.on('end', () => {
  console.log('Disconnected from server');
});
client.on('error', (error) => {
  console.error(`Error: ${error}`);
});

通过以上方法,可以正确发送HTTP请求并获取到响应。

0
0 Comments

问题的原因是发送的HTTP请求中的协议和终端的协议不匹配,还有换行符的使用不正确。解决方法是将HTTP请求中的协议改为与终端相匹配的协议,并将换行符从"\n"改为"\r\n",并确保请求以"\r\n\r\n"结尾。如果仍然无法获得响应,则可以尝试使用http://77.214.52.152/代替http://google.com

0