Запрос к API завершается успешно в браузере, но завершается ошибкой с узла

Я хочу сделать запрос к общедоступному API анализа цвета:

http://mkweb.bcgsc.ca/color-summarizer?url=http://www.undistraction.com/vangogh/images/fisherman_s_wife_on_the_beach-8.jpg&precision=vlow&num_clusters=7&json=1&histogram=0&pixel=0

Если я помещу этот URL-адрес в адресную строку Chrome, я получу объект JSON, возвращенный примерно через 10 секунд, однако при выполнении запроса от Node я всегда получаю только ошибку ESOCKETTIMEDOUT.

request.get({
  uri: 'http://mkweb.bcgsc.ca/color-summarizer?url=http://www.undistraction.com/vangogh/images/fisherman_s_wife_on_the_beach-8.jpg&precision=vlow&num_clusters=7&json=1&histogram=0&pixel=0',
  timeout: 60000,
 })
.on('error', (error) => {
  console.log(error); // ESOCKETTIMEDOUT
})
.on('finish', (body) => {
  // Happy place
});

Что может быть причиной этой ошибки?


person Undistraction    schedule 13.02.2017    source источник


Ответы (1)


Я подозреваю, что это потому, что у вас нет User Agent в заголовках.

Возможно, попробуйте:

request.get({
  uri: 'http://mkweb.bcgsc.ca/color-summarizer?url=http://www.undistraction.com/vangogh/images/fisherman_s_wife_on_the_beach-8.jpg&precision=vlow&num_clusters=7&json=1&histogram=0&pixel=0',
  timeout: 60000,
  headers: {'User-Agent': 'Some user agent string'}
});

Возможно, вам нужно скопировать строку пользовательского агента из вашего браузера. Другим возможным решением может быть отсутствие правильного файла cookie и т. д. Вы уверены, что имеете право на доступ к этой конечной точке?

Смотрите этот ответ для получения дополнительной информации:

person rsp    schedule 13.02.2017
comment
Спасибо за предложения. Я пробовал несколько пользовательских агентов, все с теми же результатами, и конечная точка определенно общедоступна. - person Undistraction; 13.02.2017