vue+django跨域问题的学习

在Vue项目中遇到axios请求数据时的跨域问题,错误信息提示缺少'Access-Control-Allow-Origin'头。解决方法包括:安装django-cors-headers,配置settings.py的MIDDLEWARE和INSTALLED_APPS,定义CORS_URLS_REGEX、CORS_ALLOW_METHODS和CORS_ALLOW_HEADERS,最终成功实现数据请求。

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

在vue中进行axios请求数据的数据是弹出错误信息

No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

出现了跨域问题

解决方法:

第一步:

安装django-cors-headers

pip3 install django-cors-headers

第二步:

setting.py文件中的:
MIDDLEWARE添加corsheaders.middleware.CorsMiddleware

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    ......
]

第三步:

INSTALLED_APPS里添加corsheaders

INSTALLED_APPS = [
    .....
    'corsheaders',
    .....
]

第四步:

在最后加入:

# 定义允许的匹配路径正则表达式
CORS_URLS_REGEX = '^.*$'

# 设置允许访问的方法
CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
    'VIEW',
)

# 设置允许的header
CORS_ALLOW_HEADERS = (
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
)

最后:

成功请求到数据
在这里插入图片描述
参考: 连接

### 集成Vue.jsDjango的方法 #### 使用RESTful API连接前后端分离架构 为了使Vue.js前端应用能够与Django后端服务通信,通常采用创建RESTful API的方式。这可以通过安装`django-rest-framework`来实现[^1]。通过定义序列化器和视图集,在Django项目中暴露API接口给Vue.js调用。 ```bash pip install djangorestframework ``` 接着配置URL路由指向相应的ViewSet类: ```python from rest_framework import routers router = routers.DefaultRouter() router.register(r'users', UserViewSet) urlpatterns = [ path('', include(router.urls)), ] ``` 对于资源共享(CORS),可以利用第三方库`corsheaders`解决浏览器同源策略限制问题。 ```bash pip install django-cors-headers ``` 在项目的设置文件里添加中间件并指定允许访问的名列表: ```python INSTALLED_APPS = ( ... 'corsheaders', ... ) MIDDLEWARE_CLASSES = ( ..., 'corsheaders.middleware.CorsMiddleware', ... ) CORS_ORIGIN_ALLOW_ALL = True # 开发阶段可设为True;生产环境建议改为具体白名单 ``` #### 前端工程构建工具的选择 当决定将Vue.js作为单页应用程序(SPA)框架时,推荐使用Webpack打包资源文件。借助于`vue-loader`加载.vue组件以及处理预处理器语法糖如SCSS/SASS等样式表格式[^2]。 另一种方案是考虑Nuxt.js——一个基于Vue.js建立的服务端渲染(SSR)解决方案,它简化了很多开发流程并且自带SEO优化特性[^3]。 #### 数据交互方式 考虑到性能因素,可以在适当场景下选用WebSocket实现实时双向通讯机制替代传统的HTTP请求响应模式。Python中有许多优秀的异步网络编程库可供选择,比如 Channels 或者 Tornado 来配合Django完成这项工作[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值