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

Django错误中Request URL/HTTP_REFERRER为Sendgrid域名的原因排查

问题解析:SendGrid域名出现在Django登录请求日志中的原因

核心结论

SendGrid域名出现在请求日志里,本质是用户点击了经过SendGrid跳转追踪的邮件链接,最终请求落到了你的/login/端点,和你删除DNS记录的操作无关。

具体原因分析

1. 点击追踪覆盖不全

你在邮件锚点添加clicktracking="off"仅对单个锚点生效,如果SendGrid后台全局开启了点击追踪,或者部分旧邮件模板未添加该属性,发送出去的链接依然会被替换为SendGrid的跳转链接(如uXXX.ct.sendgrid.net/ls/click?upn=...)。用户点击这类链接时,浏览器会先访问SendGrid的跳转服务器,再重定向到你的/login/端点,此时请求的Referer会被设置为SendGrid的跳转URL。

2. 历史邮件的残留影响

此前发送的带SendGrid跳转链接的邮件仍保存在用户邮箱中,用户点击这些历史邮件的链接时,依然会触发SendGrid的跳转流程,即使你现在已经修改了模板或设置。这类请求会持续一段时间,直到旧邮件被用户彻底忽略。

3. 日志记录的异常

错误日志中Request URL显示为SendGrid域名,可能是NGINX反向代理配置未正确传递真实请求头导致的。如果你的NGINX未设置Host、X-Forwarded-Proto等头,Django可能会错误地将SendGrid跳转时的请求URL记录为当前请求的URL。

验证与解决建议

  • 检查SendGrid全局设置:登录SendGrid后台,进入「邮件设置」→「点击追踪」,确认是否全局开启了点击追踪。如果不需要,直接全局关闭;如果需要保留部分追踪,确保所有邮件模板的锚点都添加了clicktracking="off"属性。
  • 测试邮件链接:发送一封测试邮件,查看邮件源代码中的链接是否仍被替换为SendGrid跳转链接,以此验证模板或全局设置是否生效。
  • 修正NGINX配置:确保反向代理时传递正确的请求头,避免Django记录错误的请求URL:
location / {
    proxy_pass http://your-gunicorn-upstream;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
}
  • 忽略历史错误:旧邮件带来的请求会随时间自然减少,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:53:24