Django + Vue解决跨域问题

最近用Django做后端服务器,Vue做前端,遇到了一个跨域问题,在此纪录一下:
前端:
封装了一下Axios:
request.js如下:


// 加载进度条
//导入
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import axios from "axios";

//请求相关的方法
// 初始化axios对象
var instance = axios.create({
    headers:{
        "Access-Control-Allow-Origin":"*",
        "accept":"*/*"
    },
    // 接口根路径
    baseURL: '/api',
    // 超时时间
    timeout:50000,
    // headers: {'X-Requested-With': 'XMLHttpRequest'},
});



// 添加请求拦截器
instance.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    NProgress.start()
    return config;
}, function (error) {
    // 对请求错误做些什么
    NProgress.done()
    return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    NProgress.done()
    return response;
}, function (error) {
    // 对响应错误做点什么
    NProgress.done()
    return Promise.reject(error);
});

// 自定义get方法
let get = async function (url,params) {
    let {data} = await instance.get(url,{params})
    return data
}

// 自定义post方法
let post = async function (url,params) {
    let {data} = await instance.post(url,params)
    return data
}
//导出
export {
    get,
    post
}

在vue.config.js中做代理配置:

var path = require('path');
// 全局配置文件
module.exports = {
    // 关闭语法检查
    lintOnSave:false,
    // 开发服务器相关配置,若使用node.js此项配置被忽略
    devServer: {
        host:'localhost',
        //配置后端接口
        proxy: {
            '/api': {
                target: ' http://127.0.0.1:8000',//后端接口地址  特别注意:target只写地址就好比如对 http://127.0.0.1:8848/api/users 的请求会将请求代理到 http://localhost:8000/api/users。
                changeOrigin: true,  //是否跨域
                port: 8000
            }
        },
        contentBase: path.join(__dirname, 'public'),
        port: 8848,
    },

    // 配置webpack相关
    configureWebpack:{
        //解析
        resolve:{
            //路径别名
            alias: {
                '@': path.resolve(__dirname,'src/'),
                '@v': path.resolve(__dirname, 'src/views/'),
                '@c': path.resolve(__dirname, 'src/components/'),
            }
        }

    }
}

发送请求的位置代码如下:

handleLogin(){
                this.$get('/index').then(response=>{
                    console.log(response.data)
                }).catch(err=>{
                    console.log(err)
                })

后端Django的项目中,
setting.py中做一下相关配置如下:

# 允许所有ip访问
LLOWED_HOSTS = ['*']
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
# 允许所有的请求头
CORS_ALLOW_HEADERS = ('*')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值