2017-02-13 70 views
1

我想對一個public colour analysis 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

如果我把這個網址到瀏覽器的地址欄,我收到後約一個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 
}); 

什麼可能導致此錯誤?

回答

0

我會懷疑這是因爲您的標頭中沒有用戶代理。

也許嘗試:

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等。你確定你有權訪問該端點嗎?

看到這個答案的詳細信息:

+0

感謝您的建議。我已經嘗試了幾個用戶代理,所有這些都有相同的結果,並且終端肯定是公共的。 – Undistraction