Node.js 使用选项(http 或 https)直接请求 URL

标签 node.js http https

我想我遗漏了一些关于 http 和 https 请求的东西

我有一个包含 URL 的变量,例如:

http(s)://website.com/a/b/file.html

我想知道是否有一种简单的方法可以向该 URI 发出请求以获取数据

要发出 http(s)Request,这是我现在必须做的:

  1. 测试 URL 是 http 还是 https 以发出适当的请求
  2. 删除 http(s)://部分并将结果放入变量中(如果我在主机名中指定 http 或 https,我会收到错误消息)
  3. 将主机名与路径分开:website.com 和 `/a/b/file.html
  4. 将这个变量放在选项对象中

这是必须的还是更简单的解决方案,不涉及获取主机名和路径,并测试站点是 http 还是 https?

编辑:我不能使用 http.get,因为我需要放置一些特定选项

最佳答案

为了从 URL 中获取所有组件,您需要对其进行解析。 Node v0.10.13 具有稳定的模块:url.parse

这是如何做到这一点的简单示例:

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) => {...

关于Node.js 使用选项(http 或 https)直接请求 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17829782/

相关文章:

javascript - 卸载node版本出错

node.js - 如何使用 SailsJS v0.11.3 在 MongoDB 中存储时间值?

java - 如何从 URL 下载 .jar 文件

c - Windows 中的 C 语言如何进行端口重定向?

ssl - 连接到外部 https 网络服务时出错

node.js - 使用 NodeJS 的简单聊天应用程序

javascript - Node JS 中的外部 CSS

http - 当站点停机进行维护时发送的正确 HTTP 状态代码是什么?

php - 为什么我无法使用已编译和加载的 PHP pecl_http 扩展?

android - 在 android 中使用 SSL 进行通信