Django密码重置生成http链接而不是https
Posted
技术标签:
【中文标题】Django密码重置生成http链接而不是https【英文标题】:Django Password Reset generating http link instead of https 【发布时间】:2019-05-29 09:19:24 【问题描述】:我正在使用 Django 的内置密码重置机制。它会发送一封电子邮件,其中包含一个包含令牌的链接,单击该令牌可用于重置密码。但是,正在生成的链接正在使用模板:
% trans "Please go to the following page and choose a new password:" %
% block reset_link %
protocol :// domain % url 'password_reset_confirm' uidb64=uid token=token %
% endblock %
这里, protocol
返回的是 http 而不是 https。
我的 nginx 服务器会将任何 http 请求重定向到 https 基本链接(主页)。
因此,密码重置链接不起作用,因为生成的链接错误。它只是通过 nginx 进入主页。
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:这可能是您的 nginx 配置中 X-Forwarded-Protocol 的问题。
您需要将其添加到您的位置块中:
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
欲了解更多信息,请参阅:https://djangodeployment.com/2017/01/24/fix-djangos-https-redirects-nginx/
【讨论】:
以上是关于Django密码重置生成http链接而不是https的主要内容,如果未能解决你的问题,请参考以下文章
在使用 Django 框架构建的博客 Web 应用程序中单击重置密码时,我没有收到密码重置电子邮件链接
如果在 django 中重置密码电子邮件链接错误,则找不到页面(404)错误
NoReverseMatch:在 Django 注册中的密码重置表单中?