NodeJS - TCP - 发送HTTP请求
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的格式。谢谢大家! 🙂
问题的出现原因:发送的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请求并获取到响应。