跨域
说起跨域,我们不得不提的是同源 什么是同源呢?
同源= 协议 +域名 +端口 ,
同源策略是指,若页面的源和页面运行过程中加载的源不一致时,出于安全考虑,浏览器会对跨域的资源访问进行一些限制**
当发送网络请求时,只要其中任何一个不相同,我们都称之为跨域
解决跨域问题的方式,常见的有:
- 代理,
- CORS,
- JSONP
1JSONP 方案
JSONP的做法是:当需要跨域请求时,不使用AJAX,转而生成一个script元素去请求服务器,由于浏览器并不阻止script元素的请求,这样请求可以到达服务器。服务器拿到请求后,响应一段JS代码,这段代码实际上是一个函数调用,调用的是客户端预先生成好的函数,并把浏览器需要的数据作为参数传递到函数中,从而间接的把数据传递给客户端
JSONP有着致命的缺陷就是只能发送get请求,现在用的并不是很多
2 CORS 方案
这个方案主要是后端来做的,后端设置响应头,允许资源共享
//调用方法创建一个服务器
const app = express()
//解析json格式的请求体
app.use(express.json())
//解析查询字符串格式的
app.use(exoress.urlencoded({extended:true}))
//第一种: 使用中间件函数来设置cors允许资源共享
app.use((req.res.next)=>{
//设置响应头 告诉浏览器任何地址都可以访问这个接口
res.setHeader('Access-Cosntrol-Allow-Origin','*')
//告诉浏览器支持这些方式
res.setHeader('Access-Cosntrol-Allow-Methods','GET,POST,DELETE,PUT')
next()
})
//第二种 推荐使用插件
const cors = require('cors')
app.use(cors())
3 proxy代理方案
代码写在 vue-confog.js下的devserver中
修改配置之后,重启项目,