【问题标题】:Force Django to use HTTPS URLs when reversing强制 Django 在反转时使用 HTTPS URL
【发布时间】:2016-05-14 01:38:10
【问题描述】:

我正在 Cloud9 中运行我的 Django 应用程序,以使用通常的 ./manage.py 运行服务器进行开发。但对于外界来说,该应用程序可以通过 https:// URL 访问。

问题是,当我使用 URL 反向功能时,返回的 URL 以 http:// 开头(至少在某些时候)。当我尝试重定向到其中一个 URL 时,我在控制台中收到类似这样的错误:

Mixed Content: The page at 'https://apps.facebook.com/xxxx/' 
was loaded over HTTPS, but requested an insecure form action 
'http://xxxx.c9users.io/facebook_app/gift_shop/'. 
This request has been blocked; the content must be served over HTTPS.

我的问题:有没有办法强制反向生成 HTTPS URL 而不是 HTTP?

这是一段 sn-p 代码,它存在从 HTTPS URL 重定向到 HTTP 的问题:

class IndexRedirectView(RedirectView, CSRFExemptMixin):
    permanent = False

    def get_redirect_url(self, *args, **kwargs):
        if self.request.user.visit_count >= 5:
            return reverse('gift-shop')
        if len(BaseGiftableInstance.objects.filter(giving_user=self.request.user)) > 0:
            # has won something
            return reverse('gift-shop')
        return reverse('spinner')

【问题讨论】:

  • 您不得使用 RUNSERVER 运行您的生产站点
  • @DanielRoseman 这不是我的生产站点。
  • 虽然它是公开的。不要这样做。配置合适的网络服务器。
  • 我仍然需要调试功能来简化开发。而且我使用的是 Cloud9,因此 Facebook 可以访问该应用程序。
  • @DanielRoseman Cloud9 是一个基于云的 IDE。放松一下。

标签: python django python-2.7 cloud9-ide django-1.6


【解决方案1】:

如果您使用的是 Django 1.8 或更高版本,则可以使用设置 SECURE_SSL_REDIRECT = True 强制 SSL - 请参阅 this answer 的类似问题

【讨论】:

    【解决方案2】:

    您应该查看django-sslify,只需安装它并将其添加到您的MIDDLEWARE_CLASSES

    【讨论】:

      猜你喜欢
      • 2012-08-01
      • 2019-01-23
      • 2015-06-22
      • 1970-01-01
      • 2012-02-24
      • 2018-03-18
      • 1970-01-01
      • 2011-03-19
      相关资源
      最近更新 更多