Node.js请求直接发送到URL,带有选项(http或https)
我想我遗漏了一些关于http和https请求的信息 我有一个包含URL的变量,例如:Node.js请求直接发送到URL,带有选项(http或https),node.js,http,https,Node.js,Http,Https,我想我遗漏了一些关于http和https请求的信息 我有一个包含URL的变量,例如: http(s)://website.com/a/b/file.html 我想知道是否有一种简单的方法向该URI发出请求以获取数据 要发出http(s)请求,我现在必须执行以下操作: 测试URL是http还是https以发出适当的请求 删除http://部分并将结果放入变量中(如果在主机名中指定http或https,则会出现错误) 将主机名与路径分开:website.com和`/a/b/file.html 将此变
http(s)://website.com/a/b/file.html
我想知道是否有一种简单的方法向该URI发出请求以获取数据
要发出http(s)请求,我现在必须执行以下操作:
website.com
和`/a/b/file.html编辑:我不能使用http.get,因为我需要放置一些特定的选项,以便从URL中获取所有组件,您需要对其进行解析。节点v0.10.13具有稳定的模块: 这是一个简单的示例,说明如何执行此操作:
var q = url.parse(urlStr, true);
var protocol = (q.protocol == "http") ? require('http') : require('https');
let options = {
path: q.pathname,
host: q.hostname,
port: q.port,
};
protocol.get(options, (res) => {...
对于在此处结束的用户,
协议
包括:
,而路径名
不包括搜索
,因此必须手动添加。不应解析参数,因为它们不需要(这样可以节省计算时间:)
此外,在函数中要求这样做并不是一种最佳实践,可能这段代码最终会出现在函数中,因此有了所有这些改进,因此我将重写以下内容的答案:
import*作为“url”中的url;
从“https”导入*作为https;
将*作为http从“http”导入;
consturi=url.parse(urlStr);
const{request}=uri.protocol=='https:'?https:http;
常量选项={
头,//应该在某处定义。。。
方法:“GET”,
主机名:uri.hostname,
端口:uri.port,
路径:`${uri.pathname}${uri.search}`,
协议:uri.protocol,
};
const req=请求(opts,(resp)=>{。。。
它们是发出协议无关请求(http和https)的一种方式吗?它将解析URL,并为您提供协议
变量。如果您需要两个单独的请求,您必须单独请求。协议包括:
,因此使用此代码,您将始终请求https
。此外,查询字符串丢失。请查看我的答案,如果有问题,请告诉我