前端访问服务器的时候数据因为跨域无法直接得到
服务端和服务端之间的通信是不存在跨域的,都是同源
前后端不分离的时候就是同源,前端和后端代码在同一个电脑上
JSONP
- script
- img
- link
- iframe
它们不受同源策略的影响
它们通过script
标签的src
,src
指向服务器的api
地址,因为不受同源的影响,因此可以访问带数据,之后把本地浏览器端的一个函数func
作为回调函数传递给服务器。服务器收到请求,同时也可以拿到传过来的函数
之后服务器做两件事
- 服务端准备数据
data
- 给客户端返回数据(利用传过来的函数进行包装
data
数据=>func('JSON.stringify(data)+')
。客户端收到响应,发现数据格式就是自己全局函数func
,于是对函数fun
进行调用,执行JSON.parse
得到data
特点
JSONP
需要服务端的支持func
必须为全局函数- 服务端需要利用
func
进行数据包装 - 只支持
get
请求(限制了我平时在开发中,基本用不到它!!!)
CORS跨域资源共享
- C端发送
axios/ajax
请求并做一些基本的配置 - S端设置响应头的相关信息,但是需要做
options
试探性的请求(如果是利用node
开服务的话,可以利用中间件进行相关的设置)
http proxy =>webpack + webpack-dev-server
正常开发的Vue
项目的时候,下载webpack-dev-serve
直接设置webpack
配置文件既可以。Vue-cli
已经集成,在vue.config.js
中进行配置
document.domain+iframe
只能实现同一个主域,不同子域之间的同源
v.qq.com
sports.qq.com
qq.com是主域
nginx反向代理
不需要前端参与,后端在linux
中进行配置
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZengXPang's blog!
评论