Django与Vue本地开发跨域问题
Vue 和 Django 结合实现前后端分离,但在本地开发环境使用 Axios 请求时遇到了跨域问题,这里记录下通过配置 vite.config.js 文件解决跨域的方法
说明
Django 启动的后端服务接口:http://127.0.0.1:8000/vue/
Vue 启动的前端页面:http://localhost:5173
版本
- Vue:3.3.4
- Vite:4.3.9
- Django:4.2.3
Django 配置
假设项目名称 mysite
、应用名称 polls
mysite/settings.py 文件配置
1 | INSTALLED_APPS = [ |
mysite/urls.py 文件配置
1 | urlpatterns = [ |
polls/views.py 文件配置
1 | from django.http import JsonResponse |
polls/urls.py 文件配置
1 | from django.urls import path |
启动服务
1 | python manage.py runserver |
访问 http://127.0.0.1:8000/vue/ 应该看到:
1 | {"data": "Hello, I'm Django"} |
Vue 配置
vite.config.js 文件配置
新增一个 server 配置项:
1 | export default defineConfig({ |
/api
后面需与后端接口path拼接,比如与 http://127.0.0.1:8000/vue/
中的 vue/
拼接成 /api/vue/
App.vue 文件配置
使用 Axios 实现一个 get 请求:
1 | <script> |
/api/vue/
:
/api
:vite.config.js
设置的配置项vue/
:http://127.0.0.1:8000/vue/
中的 PATH
重启服务
1 | npm run dev |
访问 http://localhost:5173 点击按钮应该看到
1 | Get请求:Hello, I'm Django |