前端解决跨域问题的终极武器——Nginx反向代理
提到代理,分为:正向代理和反向代理。
正向代理:就是你访问不了Google,但是国外有个VPN可以访问Google,你访问VPN后叫它访问Google,然后把数据传给你。
正向代理隐藏了真实的客户端。
反向代理:你访问baidu.com,后面有成千上万台服务器,具体访问哪一台,你不知道,只需要知道反向代理器是谁,让它帮你去请求真实的数据服务器,然后把数据返回给你。
反向代理隐藏了真实的服务端。
Nginx是一个web服务器,可以做反向代理,负载均衡器,HTTP缓存。前端开发一般用Nginx解决跨域问题:
举个栗子:本地前端页面是是http://localhost:8080,而请求的服务器是http://192.168.10.1:8080
Nginx或者Apache上面的配置代理:将服务器的ip映射成别的相对路径。
http { server { listen 80; location /{ proxy_pass http://localhost:8080; } location /api{ proxy_pass http://192.168.10.1:8080; } } }
Nginx运行在localhost:8080 上,将服务器ip:http://192.168.10.1:8080映射成了api,当调用api路径时,就不像是在跨域了而是在访问本地(http://localhost:8080) ,实际上是在访问服务器(http://192.168.10.1:8080)。
Nginx解决跨域问题通过Nginx反向代理将对真实服务器的请求转移到本机服务器来避免浏览器的"同源策略限制"。
前端遇到跨域问题,要么让后台通过配置Access-Control-Allow-Origin参数来解决,要么自己本地起个Nginx反向代理进行跨域设置。
【完】
学会素读,学会素听,交流的前提是必须知道别人完整的东西,否则学习到的东西很少了。