跨域

1. 为什么会有跨域问题?

浏览器的一种保护机制,为了防止用户个人信息等被攻击窃取,所以浏览器根据同源策略产生了跨域问题,服务器是没有跨域问题的,请求服务器,服务器都会返回数据,只是浏览器在拿到服务器返回的数据时,会不会返回给axios或者ajax请求的success而已
浏览器产生跨域问题,一般是报错CORS policy

2. 跨域怎么产生的?

只要一个请求URL中的协议,域名,端口三者之间任意一个与当前页面的URL不同,即为跨域
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 跨域的几种解决办法

  • JSONP
    由于script标签没有跨域问题,所以JSONP正是利用这一特点来解决跨域问题,服务器将数据和代码全部返给前端,在本地运行
    callback是为了告诉后端前端定义的方法名称,就是为了将方法名称写活,不用每次前后端都要定好方法名称
    后端
    在这里插入图片描述
    前端在这里插入图片描述
    在这里插入图片描述
  • CORS
    后端加一行代码即可解决跨域问题,不用前端做什么,但是这种方法会涉及到cookie的请求问题,则前后端都需要设置,前端的设置为axios.defaults.withCredentials=true这一行代码
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • proxy代理
    应用最多的一种方法,应用的原理是,浏览器有跨域要求,服务器没有跨域要求,前后端同时都要设置
    在这里插入图片描述
    在这里插入图片描述
    vue.config.js文件
    设置changeOrigin为true
    在这里插入图片描述
    还有一种方法是,找到config文件夹里面的index.js文件,给proxyTable设置changeOrigin为true
    在这里插入图片描述

在这里插入图片描述
生产环境中没有proxy,用Ngnix反向代理,这是运维的事情,和前端没关系

最推荐用CORS方法,面试中只回答这一种方法就可以了

参考文章:https://segmentfault.com/a/1190000015597029

cors的后台设置
在这里插入图片描述
jsonp前端设置
在这里插入图片描述

proxy代理
vue项目中新建vue.config.js文件,文件名一定要叫这个,不能更改,在文件中modules.exports配置proxy的’/api’的target,changeOrigin
target是要请求的地址
changeOrgin设置为true,允许跨域,这个配置相当于vue脚手架帮你开启了一个隐藏的服务器,帮你转发了请求
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值