前端学习记录(十五) jsonbird解决跨域请求问题

最近在用vuecli框架搭建一个项目练习,其中一个页面需要猫眼电影的数据接口,想实现的最终效果如下:

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​             

打开chrome浏览器的network,在XHR下可以快速找到相应的url地址:

        

在项目文件夹下安装axios工具包,便可以通过axios.get()方法获取猫眼返回的数据:(此接口不支持传参分页,所以将movieOnInfoList后的参数删掉无伤大雅)

    let Url =
        "https://m.maoyan.com/ajax/movieOnInfoList";
      axios
        .get(Url)
        .then((res) => {
          this.dataList = res.data.movieList;
          console.log(this.dataList);
        })
        .catch(function () {
          console.log("error");
        });

 但这样直接运行会产生报错,原因便是这种请求方式产生了跨域问题

当被请求url的协议、域名、端口三者之间任意一个与当前页面url不同时,即为跨域,很显然,现在当前页面的url与猫眼电影数据接口url的协议、域名、接口三者均不相同

要解决跨域问题,其中一种方式便是使用远程数据接口代理,这里我使用jsonbird网站进行代理,这个网站有多种数据接口,这次便使用v2这一接口进行数据请求:

详见官方接口文档地址: Home · xCss/JsonBird Wiki · GitHubicon-default.png?t=L892https://github.com/xCss/JsonBird/wiki

使用v2接口时,在其接口地址后拼接原本想要访问的url接口地址,放进axios.get()中即可正常访问:

     let birdUrl =
        "https://bird.ioliu.cn/v2?url=https://m.maoyan.com/ajax/movieOnInfoList?";
      axios
        .get(birdUrl)
        .then((res) => {
          // console.log(res.data.movieList.length);
          for (let i = 0; i < res.data.movieList.length; i++) {
        //此循环功能为处理返回数据,与跨域无关
            res.data.movieList[i].img =
              res.data.movieList[i].img.substring(0, 22) +
              res.data.movieList[i].img.substring(26);
              console.log(res.data.movieList[i].img);
          }
          this.dataList = res.data.movieList;
          console.log(this.dataList);
        })
        .catch(function () {
          console.log("error");
        });

         

源码地址:Web-StudyRecording/Movie.vue at main · EarlySleep-King/Web-StudyRecording · GitHubThis repository record Web learning file. Contribute to EarlySleep-King/Web-StudyRecording development by creating an account on GitHub.https://github.com/EarlySleep-King/Web-StudyRecording/blob/main/vuecli/myapp/src/views/movie/Movie.vue

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值