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+'user&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 就是后端需要帮忙访问的第三方接口地址