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

Django获取HTTP_REFERER触发KeyError问题求助

解决Django登录页HTTP_REFERER KeyError问题

问题原因

HTTP_REFERER 并非HTTP请求的必填头信息,当用户直接在地址栏输入登录页URL、通过书签访问,或者部分浏览器/隐私设置屏蔽了来源信息时,request.META中不会包含这个键,直接通过request.META['HTTP_REFERER']取值就会触发KeyError。

解决方案

方案1:安全获取HTTP_REFERER

使用字典的get()方法获取referer,不存在时返回空字符串,避免报错:

referer = request.META.get('HTTP_REFERER', '')
if 'business' in referer:
    return redirect('panel_business:login_business')

或者先判断键是否存在再取值:

if 'HTTP_REFERER' in request.META and 'business' in request.META['HTTP_REFERER']:
    return redirect('panel_business:login_business')

方案2:利用next参数判断(更可靠)

观察你的请求URL包含next=/panel/business/,这个参数直接表示用户原本要访问的页面,用它判断比依赖HTTP_REFERER更稳定:

next_url = request.GET.get('next', '')
if 'business' in next_url:
    return redirect('panel_business:login_business')

内容的提问来源于stack exchange,提问作者Arshia Haeri-Mehrizi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:47:39