跨域-CORS

本文详细阐述了前端如何解决跨域问题,包括CORS的服务器配置、JSONP的前后端配合以及代理服务器的应用实例。通过Vue项目实战展示如何在axios、jsonp等工具下操作,并解释了为何通过Node.js代理能访问不同网站接口。
摘要由CSDN通过智能技术生成

前端跨域解决方案

  • 什么是前端跨域?
  • 怎么解决前端跨域?
  • 跨域是浏览器为了安全而做出的限制策略
  • 浏览器请求必须遵循同源策略:同域名、同端口、同协议

  • CORS跨域
  • JSONP跨域
  • 代理跨域

CORS跨域

CORS跨域 - 服务器设置,前端直接调用
说明:后台允许前端某个站点进行访问

  1. 先在vue项目中安装axios,命令:cnpm i axios --save-dev
  2. 在项目中导入import axios from ‘axios’
  mounted(){
    let url = "https://www.baidu.com/?tn=18029102_3_dg";
    axios.get(url).then(()=>{

    })
  },

在这里插入图片描述

JSONP跨域

  • JSONP跨域 - 前端适配,后台配合
  • 说明:前后台同时改造

先在前端项目中安装jsonp

npm install --save jsonp

在前端项目中调用jsonp并使用

<script>
// import axios from 'axios'
import jsonp from 'jsonp'

export default {
  name: 'app',
  components: {
  },
  data(){
    return {
      age:30,
      data: ''
    }
  },
  mounted(){
    let url = "https://www.imooc.com/activity/servicetime";
    jsonp(url, (res)=>{
      let result = res;
      this.data = result
    })
  },
}
</script>

在这里插入图片描述

代理跨域

  • 接口代理 - 通过修改nginx服务器配置来实现
  • 说明:前端修改,后台不动;

创建一个文件vue.config.js
在这里插入图片描述

module.exports = {
  devServer:{
    host:'localhost', 
    port:8080,
    proxy:{
      '/activity':{        //拦截
          target:'https://www.imooc.com',
          changeOrigin:false
      }
    }
  }
}

并修改访问路径
在这里插入图片描述
原理:当你访问/b的时候,底层会调用/a
为什么说,我们可以通过前台访问各个网站的接口,因为我们用的是node.js是后台,所以可以调用各个接口,就好像爬虫可以爬取各个网站一样,那么就可以在前台进行调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值