今天被面试官问到了proxy-middleware和jsonp的原理,无奈只是听说过,工作没有遇到过,所以花了点时间整理了一下大概的原理,仅作参考,欢迎指正。
跨域
原因:浏览器的同源策略拒绝了前端的请求
nginx
在nginx中配置地址重写:
访问地址以某个开头的都会被这个模块捕获,重写转发到后端项目上去。
访问地址以/js开头的也被这个模块捕获,转发到前端项目上去。
http-proxy-middleware
需要npm下载
http-proxy-middleware用于后台将请求转发给其它服务器。
let proxy = require('http-proxy-middleware');
let apiProxy = proxy('/api', {target: 'http://www.example.org'});
// \____/ \_____________________________/
// | |
// 需要转发的请求 目标服务器
将http-proxy进行封装,更容易使用,类似于nginx,将所有的请求转发到目标服务器上
jsonp
利用可以绕过同源策略检测的标签来解决跨域
iframe应该也是不受浏览器同源策略的影响,所以可以跨域
由于浏览器收同源策略的限制,网页无法通过Ajax请求非同源的接口数据,
但是script标签不受浏览器同源策略的影响,可以通过src属性请求非同源js脚本。
简而言之,JSONP的实现原理就是通过<script>标签的src属性,请求跨域的数据接口,
并通过函数调用的形式,接收跨域接口响应回来的数据
缺点:只支持GET数据请求,不支持POST请求
谷歌一行命令
应该是关闭了浏览器的同源策略(自己的推测)