You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django与React对接遇CORS跨域及301重定向问题求助

问题分析与解决方法

你的问题核心是Django的URL自动重定向(301)引发跨域请求异常,结合你的配置代码,以下是具体排查和修复步骤:

1. 修复请求URL格式问题

从响应头的Location字段能看到,Django把/api/get重定向到了/api/get/——这是Django默认的APPEND_SLASH行为:当请求URL末尾无斜杠,但URL配置里定义的是带斜杠的路径时,会自动触发重定向。

你的React请求存在两处错误:

  • 第一个请求URL缺少Django服务的默认端口号(8000),正确地址应为http://localhost:8000/api/get/?date=03.24.2023&job_id=131315
  • job_id参数值末尾多了斜杠,会导致参数解析异常,需删除

修改后的axios代码:

axios.get('http://localhost:8000/api/get/?date=03.24.2023&job_id=131315').then(function (response) {
  console.log(response);
})

2. 可选:关闭Django自动加斜杠行为

如果不想依赖重定向逻辑,可在settings.py中添加:

APPEND_SLASH = False

注意:前提是你的urls.py中定义的路径不带斜杠(比如path('api/get', views.get_log_details)),保持请求与配置一致即可。

3. 确保CORS配置覆盖重定向请求

虽然你设置了CORS_ORIGIN_ALLOW_ALL = True,但重定向后的请求可能需要额外配置允许跨域凭证。在settings.py中添加:

CORS_ALLOW_CREDENTIALS = True

该配置会让CORS头包含Access-Control-Allow-Credentials,确保浏览器接受重定向后的跨域响应。

4. 验证URL配置匹配性

检查urls.py中对应的路径定义,确保与请求URL匹配:
示例(Django REST Framework路由写法):

from django.urls import path
from . import views

urlpatterns = [
    path('api/get/', views.get_log_details, name='get_log_details'),
]

若路径定义为api/get(无斜杠),则调整请求URL去掉末尾斜杠,或修改路径配置为带斜杠。

5. 先验证API本身可用性

在浏览器或Postman中直接访问http://localhost:8000/api/get/?date=03.24.2023&job_id=131315,确认能返回200状态码和正确响应内容,排除API本身的逻辑错误。


内容的提问来源于stack exchange,提问作者breakingcode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 17:47:02