簡體   English   中英

強制Django在撤消時使用HTTPS URL

[英]Force Django to use HTTPS URLs when reversing

我正在使用通常的./manage.py運行服務器在Cloud9中運行我的Django應用程序以進行開發。 但對於外部世界,可通過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的重定向存在問題:

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-sslify ,你只需安裝它並將它添加到你的MIDDLEWARE_CLASSES

如果您使用的是Django 1.8或更高版本,則可以使用設置SECURE_SSL_REDIRECT = True強制使用SSL - 請參閱類似問題的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM