Я только что попробовал добавить эту обертку (-> routes (wrap-ssl-redirect))
для автоматического перенаправления http на https, но когда я развернусь в heroku, https://
не станет зеленым в моем браузере, и веб-сайт не загружается.Clojure: wrap-ssl-redirect on heroku?
Не является ли по умолчанию порт героя 443
, который также должен быть по умолчанию от wrap-ssl-redirect
?
Что не так?
Спасибо!
EDIT:
Мой код:
(defn prod-app [routes]
(-> routes
(wrap-keyword-params)
(wrap-params)
(wrap-ssl-redirect)))
(defn -main []
(let [port (Integer/parseInt (get (System/getenv) "PORT" "5000"))]
(jetty/run-jetty (prod-app domain-specific-routes)
{:port port :join? false})))
EDIT 2:
Я только что нашел эту нить, которая может решить мою проблему: Clojure/Noir: Force HTTPS, redirect if the request was http:// to https://
придумал этот require-https
обработчик Fn :
(defn https-url [request-url]
(str "https://"
(:server-name request-url)
":"
(:server-port request-url)
(:uri request-url)))
(defn require-https
[handler]
(fn [request]
(if (and (= (:scheme request) :http)
(= (get-in request [:headers "host"]) "secure.mydomain.com"))
(ring.util.response/redirect (https-url request))
(handler request))))
Но когда я пытаюсь подключиться к http://secure.mydomain.com
, я устанавливаю порт в адресной строке браузера https://secure.mydomain.com:80/
и получил это сообщение ERR_SSL_PROTOCOL_ERROR
.
Вам необходимо привязать к переменной окружения порта, обычно на Heroku. В ваших журналах есть сообщения? –
Я не видел никаких проблем в своих журналах. Теперь, если я попробую '(-> route (wrap-ssl-redirect {: ssl-port (Integer/parseInt (get (System/getenv)" PORT "" 5000 "))}', я получаю желтые флажки в своих журналах с 'status = 301', и браузер отображает 5-значный порт рядом с моим доменным именем. В моей конфигурации heroku у меня нет' PORT' var. – leontalbot
Можете ли вы обновить свой вопрос с помощью журналов, и точный повторяя шаги, которые вы выполняете, вместе с тем, что сработало в прошлом для вас на Heroku? –