node.js - 如何读取带有节点的子路径中的原始 HTTP 响应?
问题描述
我正在尝试使用节点获取格式错误的 HTTP 响应。由于响应格式错误,我无法request
正常使用(它会给出HPE_INVALID_CONSTANT
错误)
从这个答案https://stackoverflow.com/a/23543522/1748450net
我可以使用模块获取原始 HTTP 响应,如下所示:
var net = require('net');
var host = '192.168.1.1',
port = 80,
socket = net.connect(port, host, function() {
var request = "GET / HTTP/1.1\r\nHost: " + host + "\r\n\r\n",
rawResponse = "";
// send http request:
socket.end(request);
// assume utf-8 encoding:
socket.setEncoding('utf-8');
// collect raw http message:
socket.on('data', function(chunk) {
rawResponse += chunk;
});
socket.on('end', function(){
console.log(rawResponse);
});
});
但是,这仅适用于从主机的根页面 ( 192.168.1.1
) 获取响应。我试图从中获得响应的页面实际上是192.168.1.1/admin/landingpage.fwd
.
如果我尝试编辑host
该 URL,则会收到此错误:
events.js:187
throw er; // Unhandled 'error' event
^
Error: getaddrinfo ENOTFOUND 192.168.1.1/admin/landingpage.fwd
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:60:26)
Emitted 'error' event on Socket instance at:
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
errno: 'ENOTFOUND',
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: '192.168.1.1/admin/landingpage.fwd'
}
这可以使用net
上面示例中的模块来获取吗?
如果不可能,我可以使用什么其他方式从该 URL 获取原始 HTTP 响应?
解决方案
您可以将路径放在您的 http 请求中,如下所示:
var request = "GET /admin/landingpage.fwd HTTP/1.1\r\nHost: " + host + "\r\n\r\n",?
这就是http请求中路径的位置。
推荐阅读
- c# - 使用 .NET Core 从 MS Access 获取数据
- android - 即使在处理第二个片段之后,第一个片段也是可见的
- sql - 当另一个特定行具有某个元素时,如何使 SQL 对特定行进行计数
- lodash - 使用 Lodash 迭代匹配元素的关联数组数据
- python - 将数据序列化到 pymongo;如何处理具有属性的设置器?
- java - 与 cognito 用户池集成后如何访问 AWS API
- python - Python中的“字符串索引超出范围”错误
- ruby-on-rails - 按 created_at 过滤(start_datetime 和 end_datetime)只选择一个日期,即 end_datetime
- django - 如何根据我的时区将正确的时间写入数据库?
- angular - 如何使用angular2一次隐藏和显示一个弹出窗口