解决问题
当我在测试环境对接口的时候,因为同源策略,后端验证的cookie无法携带,因为前端项目运行在我本地,两个地址“协议,域名,端口”都不一样,这时候想要携带cookie,只能使用反向代理服务器
这时候思考几个问题:
- 为什么会有跨域
- 什么是代理
- 代理有几种,分别解决什么问题
跨域
跨域是浏览器行为,按照原本的IP协议,是不存在跨域的问题,但是由于浏览器安全性考虑,设置了同源策略,只有在同一个协议,域名,端口下的访问才没有问题,当然这些问题都有解决方案
代理
什么是代理?之前学Spring的时候我们也接触过AOP代理模式,代理就相当于中介,我们不直接做某件事,而是把这件事交给代理去做。举例:我想要点外卖,但是外卖电话太多了,我觉得很麻烦,所以我打开了美团,美团上面直接有图片显示给我看,这里美团做的就是代理的服务,那为什么要使用代理呢?直接做难道不是更方便吗?
反向代理
非常通俗的说,比如当前我运行的项目在http://localhost:8080,我的代理服务器运行在http://localhost:8081,我的代理服务器代理的目标IP是www.baidu.com,现在虽然8081端口是运行在我本地的,但是我只要用8080端口访问8081端口,反向代理服务器就自动返回访问www.baidu.com的结果,也就是转发了请求
详细的讲反向代理:就是在两端之间建立一个反向代理服务器,我的代理服务器应该指定两个IP,一个是我目标代理IP,一个是本来运行在某个IP,这时候client不会直接访问目标IP,而是通过访问代理服务器,由代理服务器转发请求到目标IP,这时候client是完全不知道请求去哪了,但是依然能正常返回响应。
看完这个图,先说一下这反向代理有什么好处?
正向代理
正向代理也可以用上面的图讲,也是建立了一个代理服务器,但是不同的是,正向代理服务器可以由用户指定要代理的IP地址。我们常见的VPN就是正向代理
区别
正向代理对服务器透明,反向代理对客户端透明
用途
反向代理:
- 用于处理跨域问题
- 负载均衡
正向代理:
- 访问原本无法访问的资源(VPN)
- 做缓存
- 记录用户行为
- 对客户端授权认证
|