Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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上的Django SSL重定向:';重定向太多';_Python_Django_Heroku_Https - Fatal编程技术网

Python Heroku上的Django SSL重定向:';重定向太多';

Python Heroku上的Django SSL重定向:';重定向太多';,python,django,heroku,https,Python,Django,Heroku,Https,我在Heroku部署了一个web应用程序,该应用程序使用自定义域名,DNS通过CloudFlare进行管理 我想做的是将HTTP请求重定向到HTTPS 根据,将SECURE\u SSL\u REDIRECT设置为True后,我在通过自定义域访问站点时遇到重定向次数过多的错误 这是我的settings.py文件中的内容: SECURE\u SSL\u REDIRECT=True 安全代理SSL头=('X-Forwarded-Proto','https') 请注意,此重定向适用于myapp.her

我在Heroku部署了一个web应用程序,该应用程序使用自定义域名,DNS通过CloudFlare进行管理

我想做的是将HTTP请求重定向到HTTPS

根据,将
SECURE\u SSL\u REDIRECT
设置为True后,我在通过自定义域访问站点时遇到
重定向次数过多的错误

这是我的
settings.py
文件中的内容:

SECURE\u SSL\u REDIRECT=True
安全代理SSL头=('X-Forwarded-Proto','https')
请注意,此重定向适用于
myapp.herokuapp.com

我在CloudFlare上使用DNS+代理,
SECURE\u Proxy\u SSL\u头
是根据Heroku的设置的

这是Heroku日志:

2019-04-17T11:21:08.514202+00:00 heroku[路由器]:at=info method=GET path=“/”host=staging.mywebsite.com请求id=cf90ab0c-0895-4faf-aeea-5ee5fe5f970d-fwd=“115.87.132.194172.68.242.176”dyno=web.1 connect=0ms服务=2ms状态=301字节=228协议=http
需要注意的是:

如果将此设置为
True
会导致无限重定向,则可能意味着您的站点运行在代理之后,无法区分哪些请求是安全的,哪些是不安全的。您的代理可能会设置一个标头来指示安全请求;您可以通过找出该头是什么并相应地配置
SECURE\u PROXY\u SSL\u头
设置来纠正此问题


据我所知,“Cloudflare”是指它使用代理使您的网站更快。如果启用代理,与heroku相结合,将导致“太多重定向”

确保Cloudflare DNS中的云未设置为橙色,并且不会在服务器之前使用代理

您可以在heroku中设置SSL,请参见:

Django修改了头的格式,因此“X-Forwarded-Proto”变成了“HTTP\U-Forwarded\U-Proto”,因此在您的示例中,您应该将
'X-Forwarded-Proto'
替换为
'HTTP\U-Forwarded\U-Proto'

从:

请注意,标头需要采用request.META使用的格式–所有大写字母,可能以HTTP开头。(请记住,Django会在request.META中提供标头之前,自动将“HTTP_”添加到x标头名称的开头。)

还有一个例子就是这个确切的标题

设置一个包含两个元素的元组–要查找的头的名称和所需的值。例如:

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
这告诉Django信任来自我们代理的X-Forwarded-Proto头,只要它的值是“https”,那么请求就保证是安全的(即,它最初是通过https传入的)


在尝试了多种方法后,总是出现“太多重定向”错误,我决定从CloudFlare执行所有重定向,并将其从我的Django应用程序中删除


这是.

是的,这就是我如上所述设置
SECURE\u PROXY\u SSL\u头的原因。