Clojure 复合重定向
我有以下几点建议Clojure 复合重定向,clojure,compojure,Clojure,Compojure,我有以下几点建议 (defroutes app-routes (GET "/login" [] (views/login)) (POST "/index.html" req (auth/do-login req)) (GET "/main" req (views/main req)) (GET "/test" [] (redirect "/login")) (not-found "Not Found")) 我用以下处理程序包装它们 (defn
(defroutes app-routes
(GET "/login" [] (views/login))
(POST "/index.html" req (auth/do-login req))
(GET "/main" req (views/main req))
(GET "/test" [] (redirect "/login"))
(not-found "Not Found"))
我用以下处理程序包装它们
(defn default-handler [routes]
(wrap-defaults routes
(-> site-defaults
(assoc-in
[:security :anti-forgery] false))))
(def http-handler
(-> (default-handler app-routes)
(wrap-stacktrace)
(wrap-authentication backend)
(wrap-authorization backend)
(wrap-session)
(wrap-params)
(wrap-with-logger)))
(defn -main []
(run-jetty http-handler {:port 8000 :join? false}))
我在后面运行一个环形服务器和nginx反向代理。我面临的问题是重定向。我无法从compojure根正确重定向。每次重定向都会将孔地址添加到根路径。例如
重定向到而不是
要从“/”重定向到uri,可以添加以下内容
2 (defn redirect* [handler uri]
33 (fn [request]
34 ¦ (let [k (if (contains? request :path-info)
35 ¦ ¦ ¦ ¦ ¦ ¦ ¦ :path-info :uri) v (get request k)]
36 ¦ ¦ (if (re-find #"/$" v)
37 ¦ ¦ ¦ (ring.util.response/redirect uri)
38 ¦ ¦ ¦ (handler request)))))
39
这是可行的,但我宁愿避免为每个重定向路径添加一个中间件问题似乎与dns的不存在有关。如果我添加(GET“/test”[](redirect)),它会重定向