vue跨域配置代理打包访问不到

项目场景:

vue配置代理解决跨域

问题描述

vue在config.js里的dev里配置了代理只是适用于开发环境,npm run dev 运行的就是dev里的东西,打包后自然访问不到

 dev: {
    // Paths
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: {
      '/api': {
        target: 'http://xxxx:9000',----后台服务器----
        changeOrigin: true,
        logLevel: "debug",
        pathRewrite: {
          '^/api': ''
        }
      }
      }
    },

原因分析:

跨域:前端向服务器发送一个请求,由于协议,主机名,端口号造成浏览器跨域(服务器能返回数据,但是浏览器认为跨域不返回),所以开发环境里要配置个代理,这样前端比如http://localhot:8000/api发送请求会自动转到target值,再由target去访问服务器,协议ip端口全一样就不会跨域了,这也是为什么浏览器看到的请求接口是后台的,因为前端代理的


解决方案:1.将axios换成ajax发送请求,利用jsonp,jsonp只适用于get请求 2.配置代理,如上

      let that = this     ------这里用that定向this,可以解决浏览器有返回值但是渲染不出来的问题
       $.ajax({
         type: "get",
         url: window.GLOBAL_CONFIG['Url'] + '/api/MANGFU',
        success: function (data) {
           that.Data = data.data
       }
       })

解决打包方案:—针对配置代理— 部署项目nginx里配置代理服务器,相当于前端的开发环境下的代理原理一样,利用代理服务器发送请求就不会跨域,因为服务器与服务器间不存在跨域问题


```html
     location /api {
            proxy_pass  http://xxxx:9000;
        }





  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在nginx中配置vue dist文件访问,您需要将nginx配置修改为以下内容: ``` server { listen 80; server_name yourdomain.com; # 静态文件目录,这里指向vue打包后的dist目录 root /var/www/yourdomain.com/dist; # index.html作为默认页面 index index.html; # 处理静态文件的请求 location / { try_files $uri $uri/ /index.html; } } ``` 上面的代码将静态文件目录设置为`/var/www/yourdomain.com/dist`,这是您打包Vue项目后生成的dist目录。此外,我们还使用`try_files`指令来处理静态文件请求,这将使nginx尝试查找请求的文件,如果找不到,则重定向到index.html。 接下来,让我们来看看如何在nginx中配置axios。 ``` server { listen 80; server_name yourdomain.com; # 静态文件目录,这里指向vue打包后的dist目录 root /var/www/yourdomain.com/dist; # index.html作为默认页面 index index.html; # 处理静态文件的请求 location / { try_files $uri $uri/ /index.html; } # 处理请求 location /api/ { proxy_pass http://your.api.server; add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS, DELETE, PUT'; add_header Access-Control-Allow-Headers 'Content-Type, Authorization, Accept'; } } ``` 上面的代码将/api/路径下的所有请求代理到http://your.api.server,并添加了一些响应头,包括`Access-Control-Allow-Origin`、`Access-Control-Allow-Methods`和`Access-Control-Allow-Headers`。 注意,如果您的Vue应用程序使用了Vue Router,那么您需要将router的模式设置为history模式,以便nginx正确地处理路由。您可以在Vue Router中进行如下配置: ``` const router = new VueRouter({ mode: 'history', routes: [...] }) ``` 希望这些信息能够帮助您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值