Как заставить приложение flask-python перенаправлять на https с помощью heroku без слишком большого количества ошибок перенаправления?

Мой веб-сайт здесь: https://climatebin.herokuapp.com/ показывает эту ошибку ERR_TOO_MANY_REDIRECTS Я попытался удалить файлы cookie и перешел в Firefox, но ни один из них не работал. Я попытался изменить https на http в URL-адресе, но он продолжает перенаправлять на https. У меня нет SSL-сертификата, и я использую бесплатные дино на Heroku. Как мне заставить это работать?

Это мой код перенаправления HTTP на HTTPS.

@app.before_request
def before_request():

    # this checks if the user requests http and if they did it changes it to https
    if request.headers.get('X-Forwarded-Proto') == 'http':
        url = request.url.replace('http://', 'https://', 1)
        print("redirected to https?")
        code = 301
        return redirect(url, code=code)

person Harry Zhu    schedule 10.05.2020    source источник
comment
Добро пожаловать в сообщество Stackoverflow. Вы должны указать, откуда именно эта ошибка. Я посетил ваш сайт, но не могу понять, где происходит эта ошибка. Также уникальная ошибка, которую я мог видеть в консоли: Mixed Content в консоли браузера.   -  person Danizavtz    schedule 11.05.2020
comment
Извините, это Google OAuth или когда вы входите в систему. Попробуйте войти на сайт. При необходимости я могу разместить здесь журналы HerokuApp.   -  person Harry Zhu    schedule 12.05.2020
comment
Это ошибка.   -  person Harry Zhu    schedule 12.05.2020
comment
Это цикл, потому что вы делаете перенаправление на адрес без https. Попробуйте изменить ссылку на адрес https для своего приложения.   -  person Danizavtz    schedule 12.05.2020
comment
Добавлена ​​правка, показывающая мой код перенаправления. И он не запустил мой код печати   -  person Harry Zhu    schedule 12.05.2020
comment
Вы должны настроить обратный обратный вызов из вашего oauth с помощью Google как https-адрес. Но не знаю, как это сделать, никогда не делал с python.   -  person Danizavtz    schedule 12.05.2020
comment
Если вы нажмете кнопку «Войти» на своем сайте, вы будете перенаправлены на адрес учетной записи Google, в панели навигации браузера есть uri, &redirect_uri= должен быть адресом https, ваш - адресом http. Эта конфигурация должна быть сделана в учетных записях Google.   -  person Danizavtz    schedule 12.05.2020
comment
мне нужно обновить мой файл credentials.json вместе с облачной консолью Google   -  person Harry Zhu    schedule 12.05.2020
comment
Это вызывает еще одну ошибку: когда я нажимаю "Войти"; Теперь это HTTP-запрос после того, как вы сделали то, что вы сказали. изменить: вы также должны это увидеть   -  person Harry Zhu    schedule 12.05.2020
comment
if not request.url.startswith('https'): return redirect(request.url.replace('http', 'https', 1)) Работает ли это для перенаправления HTTPS? В настоящее время я тестирую это в before_request   -  person Harry Zhu    schedule 12.05.2020
comment
Не сработало. Я удалил перенаправление https. Я вернулся к тому, с чего начал; Вы можете проверить сайт еще раз. Если я изменю uri перенаправления на https, он выдаст ошибку авторизации 400, которая не соответствует redirect_uri   -  person Harry Zhu    schedule 12.05.2020
comment
Вот что я получаю сейчас: Error 400: redirect_uri_mismatch The redirect URI in the request, http://climatebin.herokuapp.com/oauth2callback, does not match the ones authorized for the OAuth client. To update the authorized redirect URIs, visit: https://console.developers.google.com/apis/credentials/oauthclient/15282057415-ms3qa97o5b92j010up3l322rnc9vfa2q.apps.googleusercontent.com?project=15282057415   -  person Harry Zhu    schedule 17.05.2020
comment
Как видите, ссылка http. Мне нужно перенаправить на https, потому что этого требует Oauth.   -  person Harry Zhu    schedule 17.05.2020
comment
В сообщении об ошибке 400 в настоящее время есть URL-адрес для обновления адреса для обновления URI перенаправления.   -  person Danizavtz    schedule 18.05.2020
comment
Да, но я не хочу, чтобы он проходил через HTTP-трафик. API людей требует https-трафика   -  person Harry Zhu    schedule 19.05.2020
comment
Любая идея? @Danizavtz   -  person Harry Zhu    schedule 24.05.2020
comment
Https - это проблема безопасности, если вы не хотите его использовать, я бы порекомендовал вам отказаться от аутентификации oauth и использовать только вашу. Я думаю, что происходит слишком много перенаправлений, потому что вы перенаправляетесь на адрес http. Если вы перенаправляете на https, ошибки больше не должно происходить.   -  person Danizavtz    schedule 24.05.2020
comment
Я думаю, что я слишком оптимистичен. Heroku разрешает бесплатный статический хостинг ssl, но не динамический хостинг. Все хорошо.   -  person Harry Zhu    schedule 29.05.2020


Ответы (1)


Мой веб-сайт динамичен и для его работы используются бесплатные динамометрические устройства Heroku и SSL. Heroku использует бесплатный SSL только для статических веб-сайтов.

person Harry Zhu    schedule 29.05.2020