前端访问服务器的时候数据因为跨域无法直接得到
服务端和服务端之间的通信是不存在跨域的,都是同源
前后端不分离的时候就是同源,前端和后端代码在同一个电脑上

JSONP

  • script
  • img
  • link
  • iframe

    它们不受同源策略的影响


它们通过script标签的src,src指向服务器的api地址,因为不受同源的影响,因此可以访问带数据,之后把本地浏览器端的一个函数func作为回调函数传递给服务器。服务器收到请求,同时也可以拿到传过来的函数
之后服务器做两件事

  1. 服务端准备数据data
  2. 给客户端返回数据(利用传过来的函数进行包装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中进行配置