nodejs 解決前端跨域之后端訪問第三方接口


由於瀏覽器的同源策略,用ajax 訪問第三方接口會報跨域錯誤。

解決辦法,1,使用nginx 架設前端網站,在nginx中配置代理。

                   2,自己寫后端代碼,通過后端訪問第三放接口,把第三方接口返回的數據 再發給前端。

這里先說 第二種方法:后端代碼

const http=require('http');
const querystring=require('querystring');
const superAgent=require('superagent');
const url=require('url');
const db=require('./db');

http.createServer(function(req,res){
  var postData='';

    var params=url.parse(req.url,true).query;
    var proxy_url=params.url.replace(/\$/g,'&')
    console.log('proxy:',proxy_url)
    res.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:5500');
    var sreq=superAgent.get(proxy_url)
    sreq.pipe(res);
    sreq.on('end',()=>{
        console.log('done')
    })
    
}).listen(3000);
console.log("服務啟動。。。")

這里 用了superagent 模塊。 由於我是前后端分離的,所以配置了跨域允許訪問的域名:

http://127.0.0.1:5500   這個是我前端服務的域名+端口號

前端代碼:
 let url=this.tokenUrl+'userid='+this.userid+'&password='+this.password+'&resource='+this.resource
 url=url.replace(/&/g,'$')
axios.get('http://localhost:3000?url='+url,{
            //responseType: 'document'
        }).then((res)=>{
            console.log(res.data)
        })

前端代碼 主要是訪問剛剛啟動的后端服務,我用的是axios的get請求。參數url 就是后端需要幫忙訪問的第三方接口地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM