利用nginx做反向代理解决前端跨域问题

本文转自:利用nginx做反向代理解决前端跨域问题

 

最近朋友再群里提了一个问题,他们公司给他提供了一个获取数据的接口,在浏览器访问这个接口能获取到json数据,但是放在项目里使用ajax就产生了跨域问题,一般这个需要提供接口的后台方面需要做跨域处理,但是提供接口的不是他们公司的,然后就问大家有没有解决方案.

正好这几天看了一些关于node方面的知识,我跟他说,你可以让你们的后台做一个接口转发,用你们的后台去请求这个接口,然后在提供一个接口供你使用,相当于做了一个中转,因为服务器之间没有跨域,所以能够请求到数据.

然后他又问有没有另外的解决方法,感觉这个有点麻烦,然后我仔细想了想,突然想起了nginx解决跨域的办法,但是具体记不太清楚了,于是搜索相关的问题,网上给的资料很多,其实实现也很简单,就是使用nginx做一个反向代理,不过这个需要后台人员协助处理.具体步骤:

1.在安装了nginx的服务器中找到nginx.conf文件里的server{},如果没有找到的话就到该文件同级的conf.d文件夹里面的default.conf文件.

2.在里面添加如下代码

1
2
3
4
5
6
7
8
9
10
11
server
{
    listen 80;
    server_name www.aaa.top;
    location / {
        proxy_pass http://www.bbb.com;
        add_header 'Access-Control-Allow-Origin' '*'
        add_header 'Access-Control-Allow-Credentials' 'true'
    }
    ##### other directive
}

  其中www.aaa.com代表自己的域名,www.bbb.com代表的别人的域名,就是需要跨域的域名,然后添加上允许跨域的请求头,然后重启nginx就可以了.

这样的话请求www.aaa.com的接口就相当于请求www.bbb.com的接口了.

以上就是利用nginx做反向代理解决跨域的方法.

 
posted @ 2020-07-17 17:56  习惯沉淀  阅读(703)  评论(0编辑  收藏  举报