跨域几种解决方案

2020-03-31  本文已影响0人  平凡人笔记
一、JSONP:利用script标签可跨域的特点,在跨域脚本中可以直接回调当前脚本的函数 1)jsonp出现背景简介: 1、出现跨域的原因:浏览器同源策略导致 2、浏览器同源场景:同一协议、同一域名、同一个端口 3、类比正常使用场景:script、img、a 的src hrep 标签属性 a、举一例分析:img src 获取一张图片 get请求 获取文件流展示到页面上 4、josnp利用该原理而产生: a、仅get请求 传参里面包含js函数名称 b、接口返回内容里面包含一个js 函数名称 c、页面上解析返回内容并调用该js函数 5、代码: 二、CORS:服务器设置HTTP响应头中Access-Control-Allow-Origin值,解除跨域限制 1、代码 三、通过中间接口转发 避免前端页面出现跨域问题 四、搭建API网关  五、正向代理和反向代理比较

利用正向代理实现跨域

实现原理

对正向代理服务器进行配置,当获取非接口数据时,让代理服务器指向开发者本机的资源。当访问接口时,访问后端接口数据。

相当于大佬让小弟把酱排骨饭里面的饭和酱排骨分开买,饭自己家煮,酱排骨才去饭店买。

程序运行过程

代理配置(以mac下的charles为例)

window上可使用fiddler实现相同功能,可参看这篇文章。

打开charles的映射关系表【charles->tool->Map Remote】。

点击add可以添加映射关系。

点击 ? 符号,可以进入配置规则介绍页面。

注意

利用反向代理实现跨域

反向代理需要用到nginx,其详细介绍请看这里

实现原理

原理大体相同,但是处理的端不同,反向代理实在服务器端进行处理。首先修改hosts文件,将域名指向开发者的电脑本身,把自己伪装成服务端,再通过nginx对不同的请求进行转发,把静态资源指向开发者本地电脑的资源,将接口指向实际的服务器。

相当于把饭店设置在了黑社会的楼下,去楼下买酱排骨饭的时候,饭店米饭自己做,酱排骨则偷偷跑去别的饭店买。

代理配置

程序运行过程

简单的对比

上一篇 下一篇

猜你喜欢

热点阅读