2020-09-27跨域问题

本文介绍在Vue项目中解决跨域问题的方法,包括使用CORS配置和服务器代理proxy。阐述了如何在开发和生产环境中配置.env文件及vue.config.js,以及如何在Nginx中设置代理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次在vue中发送请求,使用ngix搭建部署服务

前后端分离中跨域问题(部分)

开发环境生产环境
后台主导CORSCORS
前端主导proxy代理nginx代理

1、使用后台配置CORS

在开发环境和生产环境中,针对不同环境访问不同接口时,需要进行相关文件配置,前端在发送axios请求时,需要配置baseURL,前提需要配置好.env环境文件。

.env.development(开发环境文件)

    VUE_APP_BASEURL=http://开发环境接口地址

.env.production(生产环境文件)

    VUE_APP_BASEURL=http://生产环境接口地址
再配置axios设置baseUrl
    const _axios = axios.create({
        baseURL:process.env.VUE_APP_BASEURL
    })

2、使用服务器代理 proxy

  • 原理:通过配置相关文件,在请求发送之前加入中间层,将不同的域名转换成相同的就解决跨域的问题

2.1 开发环境中配置

(1)、一个后台情况下,在vue.config.js中配置如下

    module.exports = {
        devServer: {
            proxy: "http://开发环境后台地址",
        }
}

则请求发送如下即可:

     axios.get('http://localhost:8081/test').then(res=>{
      console.log(res.data)
    }) 
}

(2)、多个后台情况下,在vue.config.js中配置如下
假设访问后台地址:http:localhost:4000/api02/test

  • api02 既是后台真实前缀
  • test
  module.exports = {
  devServer: {
    proxy: {
      "/自定义前端请求时前缀/": {
        target: "http://开发环境后台地址",
        pathRewrite: {
          "^/自定义前端请求时前缀": "/后台真实前缀"
        }
      }
    }
  }
}

则请求发送如下即可:

     axios.get('/自定义前端请求时前缀/test').then(res=>{
      console.log(res.data)
    })

注意:如果使用了服务器代理,则前端中不需要配置baseURL,这是因为所有的请求走的都是前端服务(代理)。因此,在发送请求时直接写接口名即可 '/xxx'。

2.1 生产环境中配置

build之后,不再有nodejs服务器,只是静态页面(proxy设置只能针对开发环境)

生产环境需要配置nginx

server {
  listen       80;
  server_name  localhost;

  #charset koi8-r;

  #access_log  logs/host.access.log  main;

  location / {
    root   html;

    # 只能有一个
    # 没有使用history 
    index  index.html index.htm;

    # 使用了history
    try_files $uri $uri/ /index.html;

  }

  # 配置代理
  location /服务器前缀 {
    proxy_pass http://要代理的服务器地址(生产服务器地址);
  }

  # 配置代理 需要进行rewrite
  location /前端请求的前缀 {
    rewrite  ^/前端请求前缀/(.*)$ /后台接口真实前缀/$1 break;
    proxy_pass http://要代理的服务器地址(生产服务器地址);
  }
  
  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
      root   html;
  }
}
注意:在nginx的nginx.conf配置文件书写代码时,注意规范,格式不正确导致软件打不开(已入坑)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值