【问题标题】:The build_absolute_uri function always generates url with the http protocolbuild_absolute_uri 函数总是使用 http 协议生成 url
【发布时间】:2021-01-29 19:21:38
【问题描述】:

请求对象的build_absolute_uri函数会生成一个http协议的url,虽然https协议的url很明显。是否有可能以某种方式强制生成安全协议?

【问题讨论】:

    标签: python django url request


    【解决方案1】:

    这听起来很奇怪。 docs 表示 HttpRequest.build_absolute_uri() 方法总是使用当前请求的协议:

    不鼓励在同一个站点上混合使用 HTTP 和 HTTPS,因此build_absolute_uri() 将始终生成一个与当前请求具有相同方案的绝对 URI [...]

    您确定在当前请求中使用的是https

    【讨论】:

    • Idea 是 url-shortener,当我得到短 url,例如 urlcutt.herokuapp.com/LI28 和 https 时,我尝试转到这个 url,在重定向视图中我调用 build_absolute_uri,然后我看到回溯,这个函数的结果 - urlcutt.herokuapp.com/LI28 和 http
    • class RedirectToOriginalView(RedirectView): def get_redirect_url(self, *args, **kwargs): absolute_url = self.request.build_absolute_uri() url = Url.objects.filter(shortcut=absolute_url).first() return url.original
    猜你喜欢
    • 2016-04-22
    • 2020-05-08
    • 2015-08-05
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多