javascript - NodeJS - TCP - 发送 HTTP 请求

标签 javascript node.js http networking tcp

我正在尝试通过 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/

相关文章:

javascript - 从二进制的有符号 2 的补码中获取十进制

java - 关于 REST PUT 动词和其他非基于 CRUD 的操作的一些说明

http - HTTP Response中的Content-MD5字段是否通用?

node.js - Kafka(kafka-node)消费者组接收来自所有分区的消息

javascript - 下次访问时恢复动态内容中的阅读位置

javascript - 使用 React 作为前端时如何从 Express 渲染 HTML 文件?

javascript - 仅在父元素内拖动指令?

node.js - NodeJS 所需的模块在其他模块中不可用

返回为 null 的 Java Web 服务请求参数

javascript - 指定单个 Google Analytics(分析)属性