python - 强制 Django 在逆向时使用 HTTPS URL

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

我正在 Cloud9 中运行我的 Django 应用程序以用于开发目的,使用通常的 ./manage.py runserver。但对于外部世界,该应用程序可通过 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?

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

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')

最佳答案

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

关于python - 强制 Django 在逆向时使用 HTTPS URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35201075/

相关文章:

Python重载对象.__and__方法

python - 在 matplotlib 轴中向指数添加 + 号

python - if 语句后“int”对象不可下标

python - 使用 Gekko 求解固定端点的最优控制

django - 如何使用 Django-Haystack 预先选择构面(即在页面加载时选中复选框)?

django - 在 Windows 64 位上使用 Python 2.7 安装 mod_wsgi

django - Django Rest Framework (DRF) 中的 add_error(fieldname, ...)

python - Numpy 构建失败,无法导入多数组

python - 在 Tkinter 中关闭窗口的函数

python - 如何在 Python 上将 Plotly Dash 显示到网站上?