Nginx代理搞定跨域请求

来源:互联网 发布:淘宝客拍a发b从哪找 编辑:程序博客网 时间:2024/05/17 23:57

首先看今天的主角,nginx配置代码

    location / {          proxy_pass http://myipaddr:8000/;      }      location /api/ {          proxy_pass http://hisipaddr:8080/web/;          proxy_set_header Host $http_host;      }

公司的项目正式开始做了,今天和后端测试了第一个接口,很不幸,浏览器报出了跨域不可访问错误,不过已经没有截图了。幸好针对前后端分离架构,我早有准备,Nginx!
跨域问题也算是老生常谈的话题,大家讨论的都是有几种方法可以解决跨域。
但是,今天记录的主要是我错误的做法。
这个项目是我在负责前端开发,前端程序部署在我的电脑,后端在另一台。想都没想,我把nginx装在后端电脑上,同样,胡乱写了一通配置。仍然是该咋报错咋报错。

再来认识一下跨域问题,你访问一个网页,浏览器上会有域名。你点击网页中的一个发送请求的按钮,例如登录。请求也有一个URL。于是,我们便有了两个域,这两个域是否在同一个域决定了我们的请求是否跨域。
这样一来,我在后端装了个Nginx真是牛头不对马嘴,瞎胡闹。
所以说,解决跨域问题,是需要在前端部署环境进行的,让用户当前访问页的域和请求域保持统一。
再回过头来看配置信息。

    location / {          proxy_pass http://myipaddr:8000/;      }

这里对静态资源进行转发。

 location /api/ {          proxy_pass http://hisipaddr:8080/web/;          proxy_set_header Host $http_host;      }

这里对接口资源进行转发。
于是,两者在使用时的域就都是nginx代理的域了。
当然,解决跨域访问的方式还有很多,但是理解何为跨域是基础。

0 0