Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

redirect ignores context on app servers #120

Open
yogthos opened this issue Jul 4, 2012 · 0 comments
Open

redirect ignores context on app servers #120

yogthos opened this issue Jul 4, 2012 · 0 comments

Comments

@yogthos
Copy link

yogthos commented Jul 4, 2012

I notice there's a quirk in Noir when using redirects, if I'm deploying on an app server, such as Glassfish, the context root of the servlet will be determined by it and isn't known up front. Using wrap-base-url in the handler does not seem to affect noir.response.redirect, then it will try to redirect to the root URL instead of context + root.

The issue can be hacked around by redefining resolve-url

(defn fix-base-url [handler]
  (fn [request]
    (with-redefs [noir.options/resolve-url 
                  (fn [url] 
                    ;prepend context to the relative URLs
                    (if (.contains url "://") 
                      url (str (:context request) url)))]
      (handler request))))

but not by binding :base-url in noir.options as has been suggested here https://groups.google.com/forum/?fromgroups#!topic/clj-noir/KfJzndyJivc

(defn wrap-base-url
  [handler]
  (fn [request]
    (binding [noir.options/*options* (assoc noir.options/*options*
:base-url (:context request))]
      (handler request))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant