文档章节

通过nginx反向代理实现跨域访问

o
 osc_g8254g7s
发布于 2019/08/19 20:27
字数 701
阅读 16
收藏 0

精选30+云产品,助力企业轻松上云!>>>

通过nginx反向代理实现跨域访问

同源策略

  • 同源策略是一种约定,它是浏览器最核心也最基本的安全功能
  • 同源 指的是 域名、协议、端口都相同。如果其中有一个不同,浏览器会认为不同源,也就是跨域

跨域访问实现过程

  • 写一段最简单的请求后台的代码,将后台返回结果在控制台输出,此时,浏览器请求地址和代码里请求后台的url地址是同源的,页面没有报错,后台返回的结果输出到控制台里:
通过nginx反向代理实现跨域访问

前端html代码

通过nginx反向代理实现跨域访问

请求结果

  • 然后,我换个请求后台的url地址,将a.tankhui.cn 换成 b.tankhui.cn 但在nginx中实际他们指向的访问目录是一样的。此时,浏览器请求地址a.tankhui.cn和代码里请求后台的url地址 b.tankhui.cn 不同源,所以,页面出现了跨域报错 。
通过nginx反向代理实现跨域访问

将a.tankhui.cn 换成 b.tankhui.cn

通过nginx反向代理实现跨域访问

出现跨域报错

  • 下面是此时的后台 ngixn配置:
通过nginx反向代理实现跨域访问

nginx配置

  • 现在为了可以访问 b.tankhui.cn 的内容,又要解决跨域的问题,我在前端代码中还是请求 a.tankhui.cn ,然后,在nginx配置中,将来自 a.tankhui.cn 的后端请求代理到 b.tankhui.cn,此时可以正常访问 b.tankhui.cn的内容
通过nginx反向代理实现跨域访问

请求代理到 b.tankhui.cn

通过nginx反向代理实现跨域访问

来自 b.tankhui.cn的请求结果

  • 为了证实请求确实被转发到 b.tankhui.cn,我在nginx配置中,将访问日志记录到特定的文件下:
通过nginx反向代理实现跨域访问

设置 b.tankhui.cn的访问日志,注意server_name 是 b.tankhui.cn

  • 当我访问 http://a.tankhui.cn/index.html 时,能看到 b.tankhui.cn 网站的访问日志确实有记录:
通过nginx反向代理实现跨域访问

b.tankhui.cn nginx 日志记录

  • 此时,已经实现了跨域的访问。然而,上面是将所有来自 a.tankhui.cn 的后台请求,都转发到了 b.tankhui.cn, 这种方式比较粗暴,实际工作中,只有一部分请求,需要代理到其他网站。
  • 下面,为了标识需要代理到b.tankhui.cn 的请求,请求后台的 url地址 后面加一个flag=1的参数:
通过nginx反向代理实现跨域访问

请求参数加了 flag=1

  • 相应地,在后台nginx配置中,给 flag先赋一个初始值 0,只有当请求参数中带有 flag=1的,将flag的值变为1,认为需要代理到 b.tankhui.cn。
通过nginx反向代理实现跨域访问

根据 flag的值判断是否需要代理到 b.tankhui.cn

  • 现在我改变不同的请求后台的url地址,发现,只有 带有flag=1的请求,才会被代理到b.tankhui.cn, 并能在b.tankhui.cn 的nginx访问日志中看到。
通过nginx反向代理实现跨域访问

改变 url的值,请求文件和flag不同

通过nginx反向代理实现跨域访问

url='http://a.tankhui.cn/newTest.php?flag=1'

通过nginx反向代理实现跨域访问

url = 'http://a.tankhui.cn/test.php'

通过nginx反向代理实现跨域访问

b.tankhui.cn nginx日志

  • 这样就可以将特定的请求代理到其他网站,实现跨域访问。
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

图解ARP协议(二)ARP***原理与实践

一、ARP***概述 在上篇文章里,我给大家普及了ARP协议的基本原理,包括ARP请求应答、数据包结构以及协议分层标准,今天我们继续讨论大家最感兴趣的话题:ARP***原理是什么?通过ARP***可以做...

osc_91g5cdgs
19分钟前
0
0
shell进度条实现

#!/bin/bashb=''i=0while [ $i -le  100 ]do    printf "progress:[%-50s]%d%%\r" $b $i    sleep 0.1    i=`expr 2 + $i`            b=#$b......

osc_npw5uz1o
20分钟前
13
0
通过ssh实现登录服务器脚本

版本v1 #!/bin/bash########################author: Bovin########################show all host infos of serverList.txtif [[ -f $HOME/.serverList.txt ]]then  hos......

osc_lt2jwwhb
22分钟前
8
0
VMware Fusion下Centos联网

1.VMware Fusion设置选择“网络适配器” 2.“连接我的网络适配器”选择“与我的mac共享” 3.编辑centos的ip配置文件 [root@Centos ~]# more /etc/sysconfig/network-scripts/ifcfg-eth0D...

osc_pg5rp78i
23分钟前
6
0
Kickstart配置文件参数详解

kickstart是什么? KickStart是一种无人值守的安装方法。它的工作原理时在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成K...

osc_r9yyhhqz
24分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部