Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Heroku仍然重定向到https_Python_Django_Ssl_Heroku_Https - Fatal编程技术网

Python Heroku仍然重定向到https

Python Heroku仍然重定向到https,python,django,ssl,heroku,https,Python,Django,Ssl,Heroku,Https,几天前,我从我们的网站上删除了SSL,并且遇到了很多问题。然而,其中大多数问题已经解决,只有一个问题存在:一个被重定向到https,即使您输入http 在Heroku中,我删除了SSL应用程序以及PointDNS中指向osaka-4635.herokusl.com的指针 目前,我在PointDNS中有以下内容: 从根目录到dns的NS指针x.pointhq.com 从根目录到heroku应用程序的别名 CNAME从www到heroku应用程序 这里是否有问题,或者后端代码中是否有需要更改的内

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

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

目前,我在PointDNS中有以下内容:

  • 从根目录到dns的NS指针x.pointhq.com
  • 从根目录到heroku应用程序的别名
  • CNAME从www到heroku应用程序
这里是否有问题,或者后端代码中是否有需要更改的内容? 问题可能出在我们的DNS提供商而不是Heroku

再一次,我只想删除https

提前谢谢

编辑:

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

middleware.py:

设置\u base.py:

gunicorn.conf:

settings.py:


我想我还有工作要做。。。但是对于那些理解代码的人来说,在这种情况下从https更改为http可能需要大量的工作吗?

在settings.py或settings\u base.py中找到中间件类,并对包含“RequestSSLMiddleware”和“ResponseSSLMiddleware”的行进行注释。这些是定制的中间件类,不是Django提供的


在settings.py中注释包含SECURE_PROXY_SSL_标头的行,因为您不需要https,因此不再需要该行。

检查您的htaccess。如果里面什么都没有,可能是一段代码重写了
$\u服务器['HTTPS']
@Deer-Outdoor.nl:谢谢。这行代码是否有一个特定的文件需要我查看?在您的htaccess中,查找使用https重写的文件,在代码中查找检查$_服务器['https']是否为http并将其重定向到https的文件。@Deer-Outdoor.nl:搜索了$_服务器['https']的所有文件,但没有匹配项,因此我想我必须检查htaccess。在哪里可以找到/访问此文件(同样,我在Heroku上使用python/django)?在代码中搜索类似于
server{listen 80;rewrite^(.*)https://$host$1 permanent;}
。htaccess主要位于网站的根目录中。
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
# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
secure_scheme_headers = {
    'X-FORWARDED-PROTO': 'https'
}
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')