为什么Node.js中的"request module"只接受协议写的URL?

Why does the "request module" in Node.js accept only the URLs written with protocol?

我想使用请求模块发送 GET 请求。这是代码:

var requestModule = require('request');
var url = require('url');

var myUrl = 'www.google.com';
var myUrlObj = url.parse(myUrl); 

requestModule(myUrl, myUrlObj , callback);

但它不起作用,因为 myUrlObj 的 "protocol" 属性具有空值。

相同的代码在以下情况下有效:

var myUrl = 'http://www.google.com'

为什么这么死板?

我还尝试执行以下操作来解决此问题:

if ( myUrlObj.protocol == null ) {
    myUrl = "http://" + myUrl;
    myUrlObj = url.parse(myUrl);
}

但是有的网站使用https,有的网站使用http。所以,上面的代码对于使用 https 的网站会失败,require 模块会抛出异常。

如果 URL 来自用户输入,默认为 http:// 并让他们输入 HTTPS 协议。鼓励他们进入协议。大多数 HTTPS 网站会将您从 HTTP url 重定向到 HTTPS URL。您可以使用 here.

示例使 request 模块跟随重定向