解决Vue生产环境中的跨域问题

本文介绍如何使用Nginx解决Vue项目生产环境下的跨域问题,通过配置代理实现前后端分离部署。

一个项目中用到了Vue,在开发环境中,跨域调接口,很容易就实现了。但是打包了,访问Vue项目发现调用接口的地方,报404了,找不到接口,我就一直在网上找原因。最后得知,网上一致认为,Vue的生产环境与开发环境的跨域解决方法是不一样的,最后我还是相信了。不多说了,说解决方案。(本文是作者原创,转发请标明出处)

我采用了nginx来部署Vue项目。

接口让Nginx配置一个与开发环境一致的访问路径,并代理到你的后台发在的服务器。

这里说的路径是说的“apis/"或者”api“。

直接上代码比较清楚一些。

Nginx的配置:

server{
        listen    81;#Vue项目的访问地址
        server_name    localhost;
        access_log  logs/host.access.log  main;
        location /    {
            root html/dist;
            index index.html;
        }
        
        location /apis/ {#这里是核心,与开发环境中代理路径一定要保持一致
            proxy_set_header Host $host;
            proxy_set_header x-forwarded-for    $remote_addr;
            proxy_set_header X-Real-IP    $remote_addr;
            proxy_pass http://localhost:8080/;#后台的接口
        }
    }

Vue项目的创建,打包就不在这里说了,相信能 遇到这个问题的创建项目,打包已经不是问题了。

亲测,完美解决。

Vue生产环境中,有两种方式可以解决问题: 1. 后端配置允许 (1)后端配置 后端可以通过设置响应头来允许请求。例如,在Django框架中,可以在视图函数中添加以下代码: ```python response['Access-Control-Allow-Origin'] = '*' ``` 这样就可以允许所有名的请求。 (2)Vue项目配置Vue项目中,可以通过配置axios和接口路径来解决问题。 (1)axios配置 在main.js中,可以添加以下代码: ```javascript import axios from 'axios' axios.defaults.baseURL = 'http://localhost:8000' // 设置后端接口地址 Vue.prototype.$axios = axios ``` 这样就可以在组件中使用`this.$axios`来发送请求。 (2)接口路径配置 在发送请求时,可以使用相对路径来代替绝对路径。例如: ```javascript this.$axios.get('/api/user') ``` 这样就可以发送到`http://localhost:8000/api/user`的请求。 (3)最终结果 通过以上配置,就可以在Vue生产环境解决问题。 2. 配置Nginx 另外一种解决问题的方式是通过配置Nginx。具体步骤如下: (1)nginx配置Nginx配置文件中,添加以下代码: ```nginx location /api/ { proxy_pass http://localhost:8000/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } ``` 这样就可以将以`/api/`开头的请求转发到`http://localhost:8000/`。 (2)最终效果 通过以上配置,就可以在Vue生产环境解决问题
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值