代理

60次阅读

共计 1504 个字符,预计需要花费 4 分钟才能阅读完成。

最近要求我连接后端接口,我还只是个小实习,啥都不会,复制粘贴一波后,看着代码,很是迷惑,生产环境、测试环境啥的域名呢,最少应该也有两个域名把,可从头到尾我只看到了一个域名。what???求问了前辈,说用了代理,代理我懂,那不是解决跨域的吗,咋跟这个问题有关吗???接着前辈去忙别的事,留我匆忙百度中。

先解释一下跨域是什么东西?跨域是由浏览器同源策略引起的,所有的浏览器都使用这个策略,这是一种约定。同源是指域名、端口、协议相同,也就是说,页面请求的接口地址,必须与页面 url 地址处于同域上(域名、端口、协议相同)。这是为了防止某域名下的接口被其他域名下的网页非法调用,是浏览器对 JavaScript 施加的安全限制。什么是域名、端口、协议?这与是不是同台电脑无关。打开百度,网址:https://www.baidu.com/http:// => 表示协议 baidu.com => 表示域名(这是若是 www.baidu.com 表示的是二级域名,查到的资料上进行域名划分的时候,都不会加上 www.)还有端口号,默认的端口号不显示,网站上一般都不会显示端口号了,如果进行过本地开发你会发现网址是这样的 http://localhost:8080/#/8080 => 表示的就是端口号
通俗来讲,跨域就好似你去拿别人的东西,浏览器就好似看管者,一发现这种情况就会阻止你,然后你什么都拿不到,还背了“跨域”的罪名。

讲完跨域,就该进入正题了,为什么部署生产环境、测试环境的时候要用代理,那是因为我们开发的时候,肯定是在本地开发,有些静态资源也放在本地电脑上,访问这些资源,通过 IP 方式(127.0.0.1)或者 localhost 来访问,但项目上线了呢,有测试环境、生产环境,这样一算就有三个域名,调试的时候该怎么办,用哪个域名。有些人的做法,是全局声明三个域名,根据不同的环境,请求不同的域名,这样一来,就需要后端协作,需要后端每次更新都要在三个域名上进行更新,操作繁琐。有些人就用了采用代理的方法。
代理有正向代理和反向代理。
关于代理,可以看看这篇文章跨域问题,以下是一些总结。
正向代理是指一个位于客户端和目标服务器 (target server) 之间的服务器,为了从目标服务器取得内容,客户端向代理发送一个请求并指定目标(目标服务器),然后代理向目标服务器转交请求并将获得的内容返回给客户端。正向代理数据请求过程:浏览器 => 代理服务器 => 目标服务器 这是请求数据过程;目标服务器 => 代理服务器 => 浏览器 这是数据返回过程。就像大陆用户访问不了 google.com 网站,但是如果有代理(代理可能是香港或是哪里的某个服务器,这个服务器可以访问 google.com),大陆用户就可以先访问代理服务器,代理将请求发给 google.com,代理服务器将得到的数据再返回给大陆用户。
反向代理是指代理服务器来接受 internet 上的连接请求,然后转给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端。反向代理数据请求过程:浏览器 =>(代理服务器 => 目标服务器)这是请求数据过程;(目标服务器 => 代理服务器)=> 浏览器 这是数据返回过程。
从整个过程来看,正向、反向代理的区别在于代理服务器和目标服务器是否为一体。
从使用方来看,正向代理是浏览器端进行配置的,与服务器端无关,甚至可以对服务端隐藏;反向代理是服务器端配置的,对浏览器端是透明的。(关于本文问题,这个才是重点)

综上,用了代理后,全部的请求都会经过那个代理,所以不需要考虑域名啥的,后端也只需要一份代码就可以了。emmm 以上内容有很多自己的理解,若是有错误,欢迎指出~

正文完
 0