Во время перехода обратно на http с https у Opera случился глюк. Выражался он в бесконечном переходе с https на http, как говорил веб-сервер и обратно, как хотелось опере. Получался бесконечный цикл с большими оборотами на 301 редирект и обратно. Помогала только очистка хранимых защищенных паролем страниц и их данных или опция вроде того. Естественно, большинство доверяющих этому поделию свои пароли, чистить их не хотели.
Путем методов, проб и большого количества ругани выяснилось следующее. Есть параметр в заголовке HTTPS, Strict-Transport-Security, указывающий, что все ресурсы с этого домена надо забирать исключительно по HTTPS, даже если указан HTTP. Для соответствия общепринятым стандартам, срок действия этого параметра обычно указывают не менее полугода, как у меня и было выставлено, как опера и запомнила.
Теперь, когда зашла речь о том, чтобы перейти обратно, параметр отключается Strict-Transport-Security "max-age=0;" и тут, о, сюрприз. Opera этот заголовок не понимает. Т.е. она его ест молча и игнорирует, в отличие от всех других браузеров, которые этот заголовок вообще учитывают. Т.е. включить в опере это можно, а выключить нельзя. Что ждать от подобного уродца...
Придумал извращение в виде редиректа на страницу с https, где Strict-Transport-Security "max-age=1;" и эта страница потом уже через 3 секунды (после устаревания параметра), выкидывает на главную форума по http, после чего все работает нормально. Минус только в том, что все https ссылки для оперы ведут на главную, но извращаться дальше с этой дрянью желание пропало.
Пример для nginx (в https секции)
Код:
location = /o.html {
add_header Strict-Transport-Security "max-age=1;";
}
location / {
if ($http_user_agent !~ Opera) {
add_header Strict-Transport-Security "max-age=0;";
return 301 https://olegon.ru$request_uri;
}
rewrite ^/(.*)$ /o.html?$1 last;
}