跨域

跨域

  1. 什么是前端跨域?

跨域是浏览器为了安全做出的限制策略
浏览器请求必须遵循同源策略:同域名、端口、协议

跨域的三种方式:
1.CORS跨域
(在服务端设置,前端直接调用即可。即后台允许前端某个站点进行访问即可。请求的是XHR)
npm i axios --save-dev
import axios from 'axios')

>  mounted(){
>    let url = "https://coding.imooc.com/class/ajaxsearchwords"
>    axios.get(url).then(()=>{
>    })
>  }

2.JSONP跨域 (常用)
(前端适配,后端配合。前后台同时改造。请求的是JS脚本)
(需安装jsonp插件 npm i jsonp --save-dev
import axios from 'axios'

  mounted(){
    let url = "https://coding.imooc.com/class/ajaxsearchwords"
    jsonp(url,(err,res)=>{
         let result = res;
         this.data = result
       })
 }

3.代理跨域
(接口代理,通过修改nginx服务器配置来实现。前端修改,后端不动)
根目录下创建vue.config.js (遵循commonjs规范)

Request URL: https://coding.imooc.com/class/ajaxsearchwords?callback=searchKeys&_=1586142256816
选取问号前面的https://coding.imooc.com/class/ajaxsearchwords
去掉域名,后面的class与vue.config.js里的对应

getJsonp () {
      let url = "/class/ajaxsearchwords"
      jsonp(url,(err,res)=>{
        this.data= res;
      })
    },

vue.config.js文件内容

module.exports = {
  devServer:{
    host:'localhost',
    port:8080,
    proxy:{
      '/class':{  
        target:'https://coding.imooc.com',
        changeOrigin:false
      }
    }
  }
}

但是这样改成class会比较累赘。
故而在jsonp处的url改为let url = "/api/class/ajaxsearchwords"前面加上/api
vue.config.js处则改为:

proxy:{
      '/api':{
        target:'https://coding.imooc.com',
        changeOrigin:true,
        pathRewrite:{
          '/api':''
        }
      }
    }

就会变成Request URL: http://localhost:8080/api/class/ajaxsearchwords?callback=__jp0

  1. 如何解决前端跨域?

这里是引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值