【问题标题】:url_for with _external=True on heroku doesn't append the server name on the URLurl_for with _external=True on heroku 不会在 URL 上附加服务器名称
【发布时间】:2017-12-02 15:09:19
【问题描述】:

我已经在 Heroku 上部署了一个应用程序,但问题是当我的应用程序发送电子邮件时,它没有在 URL 中附加我的服务器名称:

content = Content("text/html", verification_email.format(user["first_name"],
                                                             url_for("register.display_register_form",
                                                                     token=token.decode("utf-8"), external=True)))

但我在电子邮件中收到的链接是:

http:///register_account/DnsJpXw_QIcPYeDHEg_fipB2kRiJBUj2RI6I9cI4Yl4w6K9ohbZRMVqBInuV0aOsBT4Zqt69X8MfhNfnys4s-DAQmgu1OPBwmSQnzAELvdcCyiZtkJGSY8_dQ799FOewtBDkvqR1D8XHmvVxgaVqbwSjdEBnvFsBBHMQCic%3D/verify?external=True

这个网址有问题:

  • 它不是 https,它应该是因为它是 heroku 上的主机
  • 服务器名称仅出现在 URL 中 /// 就像服务器名称为空时一样

我应该怎么做才能获得正确的 URL https://my-server-name/register_account...

编辑

我尝试在我的 config.py 文件中设置以下变量:

SERVER_NAME = "http://my-server-58140.herokuapp.com"

它在我的路径中产生了错误,我无法访问任何 URL,例如,以前可以访问以下 URL,但是在定义我的 SERVER_NAME 时它不再存在:

http://my-server-58140.herokuapp.com/home

编辑

我的烧瓶应用程序已配置:

SERVER_NAME = os.environ.get('SERVER_NAME')
DEBUG = True
BASE_DIR = os.path.abspath(os.path.dirname(__file__))

环境变量在我的本地主机上设置为0.0.0.0:5000,在我的生产服务器上设置为:my-server-58140.herokuapp.com

【问题讨论】:

    标签: python python-3.x heroku flask


    【解决方案1】:

    要生成正确的 URL,需要设置这两个 Flask 配置值:

    • SERVER_NAME 到您的网站名称,
    • PREFERRED_URL_SCHEMEhttps

    请参阅documentation for url_for()how to configure a Flask application

    编辑:另外,url_for 中的参数应该是 _external 而不是 external

    【讨论】:

    • 我更新了我的答案,SERVER_NAME 和 PREFERRED_URL_SCHEME 是否必须定义为 Heroku 环境变量?
    • 您可以尝试从SERVER_NAME 中删除http:// 吗?不,没有必要将这些定义为 Heroku 环境变量。
    • 好的,我添加了一个 SERVER_NAME,但它不起作用我的电子邮件仍然收到如下链接:http:///register_account/... 没有主域名
    • 我在使用 localhost 时遇到了同样的问题,我设置了我的 SERVER_NAME = "0.0.0.0:5000" 但应用程序发送给我的电子邮件是这样构建的:http:///register_account/.. .
    • 谢谢这是“_external”的问题facepalm你能把这个添加到你的答案中然后我会验证它
    猜你喜欢
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多