如何在Node.js環境中解決第三方接口返回403的問題?

如何在Node.js環境中解決第三方接口返回403的問題?

Node.JS環境下攻克第三方API 403錯誤

在使用Node.js調用外部API時,經常會遇到令人頭疼的403錯誤(禁止訪問)。這通常是因為服務器對請求來源進行了限制。本文將提供幾種解決方法,幫助您順利獲取數據。

問題描述: 目標API地址:https://core-api.prod.blur.io/v1/prices。在瀏覽器中(無論是否開啟隱私模式)都能正常訪問,但在Node.js中使用fetch卻返回403錯誤。

示例代碼:

let response = await fetch('https://core-api.prod.blur.io/v1/prices'); const data = await response.text(); console.log(data); // 403 錯誤

由于無法直接修改目標網站設置,我們需要在Node.js端尋找解決方案。

解決方案:

  1. 模擬瀏覽器請求頭: 瀏覽器請求會攜帶特定請求頭,服務器可能以此識別請求來源。通過在Node.js中模擬這些請求頭,可以欺騙服務器,使其認為請求來自瀏覽器。

    修改后的代碼:

    let response = await fetch('https://core-api.prod.blur.io/v1/prices', {   headers: {     'user-agent': 'Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',     'accept': 'application/json',     'content-type': 'application/json',     //  如有需要,添加授權信息     'authorization': 'Bearer your_Access_token'    } });

    authorization字段的值需要根據API的認證機制進行調整。

  2. 使用JSONP: JSONP(JSON with padding)通過<script>標簽發起請求,繞過同源策略限制,服務器通常不會對JSONP請求進行同樣的訪問限制。</script>

    需要安裝jsonp模塊:npm install jsonp

    代碼示例:

    const jsonp = require('jsonp');  jsonp('https://core-api.prod.blur.io/v1/prices', null, (err, data) => {   if (err) {     console.error(err.message);   } else {     console.log(data);   } });

    注意:JSONP只支持GET請求。

通過以上方法,您可以嘗試解決Node.js環境下調用第三方API時遇到的403錯誤。 選擇哪種方法取決于API的具體要求和限制。 如果問題仍然存在,請檢查API文檔,確認是否需要其他設置或授權。

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享