首页 > 科技 >

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

2019-08-10 06:37:26 暂无 阅读:1532 评论:0

同源策略同源策略是一种商定,它是浏览器最焦点也最根基的平安功能同源 指的是 域名、和谈、端口都沟通。若是个中有一个分歧,浏览器会认为分歧源,也就是跨域

跨域接见实现过程写一段最简洁的恳求后台的代码,将后台返回究竟在掌握台输出,此时,浏览器恳求地址和代码里恳求后台的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日志如许就能够将特定的恳求代理到其他网站,实现跨域接见。

相关文章