跨域是指a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,或是a页面为ip地址,b页面为域名地址,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。
虽然,可以通过一些设置,比如设置header :Access-Control-Allow-Origin,让浏览器允许跨域调用,但是当a页面是https站点的页面时,只要去调用http的页面,都会因为安全降级而导致调用失败。这时候就只能通过nginx反向代理的方式,在本地创建一个https的虚拟路径,指向被调用的站点。此时,从浏览器的角度来看,就是访问的同一个站点,因此也就不存在跨域的问题了。
参考配置如下:在server段中增加配置:
location ^~/proxy/html/{
rewrite ^/proxy/html/(.*)$ /$1 break;
proxy_pass http://www.b.com/;
}
这样,就可以将http://www.b.com/下所有的访问,全部用https://www.a.com/proxy/html/ 来代替,以此解决了前端跨域问题。
网友评论