Django API对接React遇CORS请求头错误,寻求技术支持
解决CORS报错:Request header field content-tye is not allowed
错误原因分析
看报错信息里的content-tye——这是请求头名称拼写错误,正确的请求头应该是Content-Type。浏览器在发送跨域预请求(OPTIONS)时,发现前端提交了一个不在后端允许列表里的请求头(这个拼写错误的content-tye),所以触发CORS拦截。
你的Django后端配置其实已经正确添加了Content-Type到CORS_ALLOW_HEADERS里,问题出在前端请求的代码上。
解决步骤
- 定位React项目中的注册请求代码
找到你调用注册API的代码(比如用fetch、axios或者其他HTTP库的地方)。 - 检查请求头拼写
找到设置请求头(headers)的部分,把拼写错误的content-tye修正为Content-Type。
示例(axios):
axios.post('https://productive-you-api-d9afbaf8a80b.herokuapp.com/dj-rest-auth/registration/', userData, { headers: { 'Content-Type': 'application/json' // 确认这里的拼写正确 } })
- 测试验证
修改后重新触发注册操作,确认控制台的CORS报错消失,API请求能正常发送。
额外检查(可选)
如果前端拼写确认无误,但报错依然存在,可以检查:
- 后端环境变量
CLIENT_ORIGIN是否覆盖了CORS_ALLOWED_ORIGINS,导致你的React域名不在允许列表里(不过你的报错里明确是请求头的问题,所以这个可能性较低)。 - 确认
default_headers没有移除Content-Type,但你的配置里是list(default_headers) + ['Content-Type'],所以这部分没问题。
内容的提问来源于stack exchange,提问作者user23331179
相关产品推荐
相关产品推荐

