Axios+NodeJs+Express代理跨域解决方案

何为跨域?


当你的前端项目地址为127.0.0.1:3000时,在前端利用Axios或Ajax请求其他网址数据/接口时(如:www.baidu.com/login ),将产生跨域问题,获取不到你想要的数据。

解决方案:利用NodeJs建立中转微服务,避过前端跨域问题,在服务器中请求其他地址数据/接口,将不会产生跨域并且正常获取数据。


以简书中的一个首页列表接口为例,正常情况下,我们利用前端技术Axios或Ajax是获取不到接口内的数据。我们用下列的接口来尝试一下正常get,应该是获取不到数据的。(环境:Vue-cli 4.0 / Axios / Nodejs / Express ,请自行搭建相应环境,这里将不再口述如何搭建。)

接口地址: type : ' get ' count="15"

https://www.jianshu.com/asimov/trending/now?count=15&note_ids=

image

按F12可以看到,报错了,并且NetWork内访问失败。现在我们利用NodeJs / Express / axios 做一个简单的微服务器。如下代码(可直接复制粘贴);

//导入express框架
const express = require("express");
//导入axios插件
const axios =require("axios");
//初始化express
const app = express();

//本地服务器解决跨域,不可缺
app.all('*', function (req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    //Access-Control-Allow-Headers ,可根据浏览器的F12查看,把对应的粘贴在这里就行
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    res.header('Access-Control-Allow-Methods', '*');
    res.header('Content-Type', 'application/json;charset=utf-8');
    next();
  });

//get接口访问,访问自己这个服务器接口
app.get("/getlist",function(req,res){
    //服务器获取数据,将不会产生跨域问题
    axios.get("https://www.jianshu.com/asimov/trending/now?count=15&note_ids= ")
    .then((response) => {
        //以json格式将服务器获取到的数据返回给前端。
        res.json(response.data);
    })
})
//启动server,端口3000
var server = app.listen(3000,function(){
    console.log("开启成功!");
})

再次访问自己这个服务器上写的接口:http://localhost:3000/getlist ,将去取简书首页列表数据返回给我们用。
前端页面:

QQ截图20200220162259.png

写好的服务器页面和最终效果:


QQ截图20200220162231.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 注:文章太长了,因此分为两段,但第一部分比较常用也更重要,可重点掌握。跨域指的是浏览器不能执行其它网站的脚本,由于...
    AizawaSayo阅读 3,873评论 0 4
  • 什么是跨域?跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。 广义的跨域: 资源跳转: ...
    薛定谔的盯裆猫阅读 1,300评论 1 38
  • 什么是跨域? 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。 广义的跨域: 其实我们通...
    CodeMT阅读 258评论 0 2
  •   项目干系人组成: 所有项目所有团队成员组织内部、外部与项目有利益关系的实体;为了明确项目要求和各参与方的期望,...
    starmier阅读 350评论 0 2
  • 时间管理100天,就这样匆匆过去了。从12月的焦虑到现在的从容,是我的改变!时间管理100天的活动结束了,生活依然...
    糖月阳阅读 199评论 1 1