使用nginx代理解决web请求本地服务器跨域问题

使用nginx代理解决web请求本地服务器跨域问题

使用nginx代理访问Vue项目

工具:nginx-1.8.0.zip

场景描述:我们在搭建本地web项目时候,有时候想要请求一下本地搭建的服务等,这个时候浏览器在请求数据时候,会有跨越的问题,跨越:域名不同,IP不同,端口不同,都会形成跨域请求。

浏览器 =>服务器=>数据库

原调试页面:http://localhost:3000/

请求地址:http://localhost:8070/VueServer/vue/getNewsList.do

因为3000端口和8070端口不是同一端口,所以浏览器会报:

Access to XMLHttpRequest at 'http://localhost/VueServer/vue/getNewsList.do' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

这是跨域请求导致的错误。

为了解决跨域的错误,我们使用nginx请求转发来解决跨域问题。

浏览器 =>nginx=>服务器=>数据库

在windows中将nginx-1.8.0.zip直接解压,双击nginx.exe,在浏览器中访问:localhost:80,出现welcome nginx即可。

如果80端口被占用,将conf文件中的nginx.conf文件端口修改后重启便可。

在cmd中进入nginx.exe的目录,如:cd E:\nginx\nginx-1.8.0,再敲命令:nginx -s reload//重启

nginx -s stop//停止nginx
nginx -s reload//重启

这里要特别注意浏览器缓存问题,基本上你nginx -s stop后,浏览器任然能打开nginx,是因为缓存问题,请每次重启后清除缓存。

原始:

​ 原调试页面:http://localhost:3000/

​ 请求地址:http://localhost:8070/VueServer/vue/getNewsList.do

步骤1:

​ 修改请求地址:http://localhost:80/VueServer/vue/getNewsList.do(将端口修改成nginx监听的端口:80)

步骤2:

​ 修改nginx.conf配置

 server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            proxy_pass http://127.0.0.1:3000;#这里是原调试页面地址,也很重要,不能不配置
            index  index.html index.htm;
        }
 
        #转发到Vue本地服务器
        location ~/VueServer\/vue\/(.*)\.do$ {
         proxy_pass http://127.0.0.1:8070/VueServer/vue/$1.do;#这里是后台服务的请求地址
        }
}

重启nginx,清理浏览器缓存。

步骤3:

调试页面不再访问:http://localhost:3000/,如果还是访问3000,还是会有跨域问题。

而是访问:http://localhost:80,nginx会在location中自动转发到http://localhost:3000/,

这样我们调试的地址是:http://localhost:80,请求的也是:http://localhost:80,即解决了跨域的问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值