为什么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
模块跟随重定向
我想使用请求模块发送 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
模块跟随重定向