vue element admin 二次开发_Vue+Django Rest Framework跨域问题解决

内容提要:

  • vue和django rest framework跨域配置。

a4a63b2e7e150cc16acb647179ca8bed.png

问题背景

跨域是指浏览器从一个域名的网页访问另一个域名的资源时,协议、域名、端口不同,都是跨域请求。JavaScript的同源策略规定,只有协议、主机名、端口号均相同时,才允许互相访问。

前后端分离的模式下,前后端分别部署,导致域名、端口不一致。此时就会产生跨域请求的场景。

以下环境的配置:

  • Django 2.2

  • djangorestframework 3.11.1

  • vue 2.6.10

  • vue-element-admin 4.4.0

Django Rest Framework

本文使用第三方库django-cors-headers。配置方法如下:

  1. 安装第三方库django-cors-headers

    pip install django-cors-headers -i https://pypi.douban.com/simple
  2. 在项目的settings.py中配置如下内容。

    # settings.py
    INSTALLED_APPS = [
    ...省略...
    'corsheaders',
    ]

    MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware', # 需要放在最前面(csrf前面即可)
    ...省略...
    ]

    # 支持跨域的配置
    CORS_ORIGIN_ALLOW_ALL = True
  3. 此时重启项目,后端接口就支持跨域请求了。

Vue(vue-element-admin)

使用vue-element-admin进行二次开发,在此项目中配置支持跨域。

配置方法如下:

  1. 打开vue.config.js文件,增加如下内容:

    # vue.config.js
    module.exports = {
    //...省略...
    devServer: {
    port: port,
    open: true,
    overlay: {
    warnings: false,
    errors: true
    },
    //增加如下内容
    proxy:{
    [process.env.VUE_APP_BASE_API]: {
    target: 'http://127.0.0.1:8000', // 转发的url
    changeOrigin: true, // 支持跨域
    pathRewrite: {
    ['^' + process.env.VUE_APP_BASE_API]: ''
    }
    }
    },
    before: require('./mock/mock-server.js')
    },
  2. 修改.env配置文件,例如修改.env.development。

    # 内容修改为空即可
    VUE_APP_BASE_API = ''
  3. 此时再重启项目,调用不同域名(或端口)的网页,跨域成功。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值