2015-05-03 3 views
0

Я хочу отправить запрос GET с помощью модуля запроса. Вот код:Почему «модуль запроса» в Node.js принимает только URL-адреса, написанные протоколом?

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

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

requestModule(myUrl, myUrlObj , callback); 

, но он не работает, потому что myUrlObj имеет нулевое значение для атрибута «протокола».

Тот же самый код работает, когда:

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

Почему это так жесткая?

Кроме того, я попытался сделать следующее, чтобы обойти эту проблему:

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

Но некоторые веб-сайты используют протокол HTTPS, в то время как другие используют HTTP. Таким образом, приведенный выше код не работает для сайтов, использующих https, а модуль require создает исключение.

ответ

1

Если URL-адрес поступает от пользовательского ввода, по умолчанию используется значение http:// и позволяет им вводить протокол для HTTPS. Поощряйте их ввести протокол. Большинство сайтов HTTPS перенаправляют вас с URL-адреса HTTP на URL-адрес HTTPS. Вы можете сделать модуль request следующим переадресацией, используя пример here.

+1

Да, это сработало! – sga4