Я нашел решение mod_rewrite
, которое хорошо работает как для проксированных, так и для непропитанных серверов.
Если вы используете CloudFlare, балансировку балансировки нагрузки AWS, Heroku, OpenShift или любые другое решение Cloud / PaaS, и вы испытываете петли перенаправления с обычными переадресациями HTTPS, попробуйте вместо этого следующий фрагмент.
RewriteEngine On
# If we receive a forwarded http request from a proxy...
RewriteCond %{HTTP:X-Forwarded-Proto} =http [OR]
# ...or just a plain old http request directly from the client
RewriteCond %{HTTP:X-Forwarded-Proto} =""
RewriteCond %{HTTPS} !=on
# Redirect to https version
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Логически много вещей как закодированные MIME сообщения электронной почты, URL, XML-документы, и так далее должно быть возвращено как bytes
не строки. Это могло вызвать некоторый испуг, поскольку библиотеки начинают закрепляться для Python 3, и люди обнаруживают, что они должны больше знать bytes
/string
преобразования, чем они были для str
/unicode
...
Одна из больших вещей об этом вопросе (и Python в целом) - то, что можно просто бездельничать в интерпретаторе! Python 3.0 rc1 в настоящее время доступен для скачивания.
>>> import urllib.request
>>> fh = urllib.request.urlopen('http://www.python.org/')
>>> print(type(fh.read(100)))
<class 'bytes'>
Здесь будет двухступенчатый танец. См. Python 3000 и Вас.
Шаг 1 должен получить выполнение под 3,0.
Шаг 2 должен заново продумать Ваш API к, возможно, сделать что-то более разумное.
Наиболее вероятный курс состоит в том, что библиотеки переключатся на строки unicode, чтобы остаться максимально совместимыми с тем, как они раньше работали.
Затем возможно, некоторые переключатся на байты, чтобы более правильно реализовать стандарты RFC для различных протоколов.