zoukankan      html  css  js  c++  java
  • 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 就是后端需要帮忙访问的第三方接口地址

  • 相关阅读:
    Python批量爬取唯美类图片
    查找Windows启动程序
    在Windows10中进行蓝屏排查
    在Windows 10中应该记住的完整的多指触摸板手势
    通过命令行工具远程注销用户
    Windows 7,8.1和10中的隐藏退出资源管理器选项
    找出正在使用的全局热键
    windows10中创建环境变量
    mysql高级(锁机制)
    mysql高级(查询截取分析)
  • 原文地址:https://www.cnblogs.com/wsz168/p/8858533.html
Copyright © 2011-2022 走看看