nginx解决跨域问题

什么是nginx?

Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

跨域问题原因:

浏览器访问时会创建请求头,请求头中存在ui服务器域名,当它去访问一个跨域服务器时仍然带着这个ui服务器域名,这时跨域服务器会拦截这个带着ui服务器域名的访问,浏览器就会报不允许跨域访问的错。

第一种方案:(适用于跨域服务器你不能动的情况)

ui服务器不用nginx代理,只用Nginx代理跨域服务器,代理服务器实现允许跨域请求后,浏览器访问UI服务器,下载UI到浏览器,浏览器把要发给跨域服务器的请求发给代理服务器(要发给UI服务器的请求仍然发给UI服务器),代理服务器再去跨域服务器请求(跨域是浏览器触发的,代理服务器访问跨域服务器就不会有跨域问题),获取到跨域服务器的响应后再把该响应返给浏览器,这样就不需要跨域服务器做任何改变就可以实现跨域访问。

第二种方案:

把ui所在的服务器和跨域服务器都用nginx代理转发,浏览器访问nginx,nginx到ui服务获取ui,再把ui下载到浏览器,浏览器发起ui中的URL,该URL为Nginx封装后的跨域服务器的URL或ui服务器的URL,该URL到达Nginx之后,会被转发到跨域服务器或ui服务器,请求处理完毕后,会通过Nginx中转返回给浏览器。暴露出来的或者浏览器所发起的url都是nginx的url,nginx去跨域服务器和ui服务器获取响应,返给浏览器,这样就没有跨域问题了。

什么是反向代理?

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

可参考下图:

图片发自简书App

简单来说:

正向代理:是代表客户端去请求接受响应

反向代理:是代表服务端来接受请求去响应



第一次写,写的不好,请多指教哈。

这是我作为前端对nginx解决跨域问题的理解,如果写的不对的地方,请指教,感激不尽!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容