Heroku仍然重定向到https

时间:2014-12-12 08:48:44

标签: python django ssl heroku https

我几天前从我们的网站上删除了SSL,并遇到了很多问题。但是,他们中的大多数已经解决,只有一个存在:即使你输入http,也会被重定向到https。

在Heroku中,我删除了SSL应用程序以及PointDNS中指向osaka-4635.herokussl.com的指针。

至于现在,我在PointDNS中有以下内容:

  • NS指针从root到dns x .pointhq.com
  • ALIAS从root到heroku app
  • 从GN到heroku app的CNAME

这里有什么问题,或者可能是后端代码需要更改的内容吗? 问题可能出在我们的DNS提供商而不是Heroku吗?

同样,我只想删除https。

提前致谢!

修改

在项目文件夹中搜索' https'并在几个文件中找到了我们的网址是硬编码的(https://www.sitename/..。)所以我知道所有这些都需要改为http。除此之外,我在以下文件中找到它(后面是代码)。

middleware.py

class RequestSSLMiddleware(object):
    def process_request(self, request):
        if not any((DEBUG, request.is_secure(), request.META.get('HTTP_X_FORWARDED_PROTO', '') == 'https')):
            url = request.build_absolute_uri(request.get_full_path())
            secure_url = url.replace('http://', 'https://')
            return HttpResponsePermanentRedirect(secure_url)

class ResponseSSLMiddleware(object):
    def process_response(self, request, response):
        if not DEBUG:
            if 'Location' in response:
                if response['Location'][0] == '/':
                    response['Location'] = 'https://' + get_current_site(request).domain + response['Location']
        return response

settings_base.py

# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

gunicorn.conf

secure_scheme_headers = {
    'X-FORWARDED-PROTO': 'https'
}

settings.py:

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

我想我面前有一些工作......但是对于那些了解代码的人来说,在这种情况下从https更改为http可能需要做很多工作吗? < / p>

1 个答案:

答案 0 :(得分:3)

在settings.py或settings_base.py中找到MIDDLEWARE_CLASSES,并注释包含“RequestSSLMiddleware”和“ResponseSSLMiddleware”的行。这些是自定义中间件类,不是由Django提供的。

在settings.py中注释包含SECURE_PROXY_SSL_HEADER的行,不再需要,因为你不想要https。