一、什么是跨域
常见场景
前端页面访问地址abc.com 访问后台地址xyz.com
前端页面访问地址https://abc.com 访问后台地址http://abc.com
...
总结 前端访问地址 与 后端接口地址 协议、域名、端口均相同 为同源
二、解决方案
2.1jsonp 解决方案(只支持get请求)
利用 <script>标签没有跨域限制的特点,动态创建一个 script标签,
其 src指向一个后端接口,并提供一个回调函数名作为参数(如 ?callback=handleResponse)。
服务器接收到请求后,将数据包装在该回调函数中返回,形如 handleResponse({data: ...})。当脚本加载到浏览器时,回调函数会自动执行。
1 |
|
1 |
|
2.2 反向代理方案
nginx 配置实现
中转方式(代码请求返回)
前端代码自己代理
2.3 cors 方案 也就是 后端服务器允许跨域
php代码方式
1 | header("Access-Control-Allow-Origin:*"); |
1 | # 设置CORS头 |