什么是跨域&如何解决跨域

跨域是浏览器对于AJAX请求实施的同源策略限制,表现为协议、域名或端口不一致时无法通信。解决跨域问题有三种方式:1) JSONP,利用script标签不受跨域限制,由后端返回函数调用字符串;2) CORS,通过后端设置响应头实现,前端默认支持;3) 代理服务器,如Vue CLI的webpack开发服务器,前端请求代理转发到目标服务器,避免跨域。
摘要由CSDN通过智能技术生成

什么是跨域
(1): 跨域是"浏览器"对"ajax"做出的同源策略限制
(2): 同源指的是, 网页在浏览器打开时, 地址栏里的地址中协议, 域名, 端口和内嵌的ajax请求的url地址中协 议, 域名, 端口有一个对不上就跨域了
注意: 服务器和服务器之间的请求是没有跨域限制的

如何解决跨域问题?
方式1: jsonp
注意: jsonp和json没有关系, JSON是一种序列化数据的技术, JSONP是解决跨域的技术
使用: script标签的src属性, 来发送请求而且它不受跨域限制, 请求后让后台返回一个函数调用字符串+数据, 在前端进入到script标签之间, 当做js代码执行, 把数据带回来
特点: 需要前端传递一个方法名, 后端返回函数调用格式的字符串
要求: 前端和后端同时支持

方式2: cors
概念: 跨域资源共享, 现代浏览器前端默认支持的, 但是还需要后端开启才行
使用: cors是让后端进行设置
特点: 你可以在响应头里看看有没有一个叫"Access-Control-Allow-Origin"字段(是后台设置的, 作用: 允许哪些源进行跨域访问)
要求: 前端什么都不用做, 正常使用axios发送ajax请求, 只需要后端开启(前端无需感知)

方式3: 代理服务器
针对: 后端不开跨域支持, 我们前端自己用代理服务器也能拿到数据
原理: 前端代理服务器, 请求后端接口服务器, 因为服务器之间没有跨域限制
好在: vue脚手架有一个webpack开发服务器支持, 给这个服务器进行配置, 让他支持代理转发

  1. 让axios请求, 不要直接请求外链地址(http开头的), 而是要请求/开头, 代表当前所在服务器(http://localhost:9528)
  2. 配置代理转发的规则, vue.config.js中devServer的proxy选项内配置(让开发服务器支持代理转发)
    前提: 后端真的有"接口地址"可以使用, 才能用ajax请求 (前后端分离的项目)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值