我几天前从我们的网站上删除了SSL,并遇到了很多问题。但是,他们中的大多数已经解决,只有一个存在:即使你输入http,也会被重定向到https。
在Heroku中,我删除了SSL应用程序以及PointDNS中指向osaka-4635.herokussl.com的指针。
至于现在,我在PointDNS中有以下内容:
这里有什么问题,或者可能是后端代码需要更改的内容吗? 问题可能出在我们的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>
答案 0 :(得分:3)
在settings.py或settings_base.py中找到MIDDLEWARE_CLASSES,并注释包含“RequestSSLMiddleware”和“ResponseSSLMiddleware”的行。这些是自定义中间件类,不是由Django提供的。
在settings.py中注释包含SECURE_PROXY_SSL_HEADER的行,不再需要,因为你不想要https。