On Sun, Apr 8, 2012 at 12:21 PM, Thomas Mortagne
<[email protected]> wrote:
> On Sun, Apr 8, 2012 at 4:00 AM, Sergiu Dumitriu <[email protected]> wrote:
>> On 04/06/2012 04:57 AM, Thomas Mortagne wrote:
>>>
>>> I was starting to look at what to modify and I found that we are
>>> really not consistent right now: most of the Java code in oldcore like
>>> XWikiAction are using absolute URL but all VM I could see (and I guess
>>> it's the same for the wiki pages) send relative URLs.
>>>
>>> So using absolute URL for send redirect is very far from being a rule
>>> right now. It also mean that making it configurable is going to be a
>>> pain since none of the .vm and wiki page are going though some common
>>> redirect oriented URL generator like most Java code do.
>>>
>>> Here is a proposal:
>>> * introduce a configuration but use it only in
>>> XWikiDocument#getURL(String action, String params, boolean redirect,
>>> XWikiContext context) (that's the method where pretty much all Java
>>> code go trough when asking for a redirect URL)
>>> * introduce a api.Document#getURL(String action, String queryString,
>>> boolean redirect) method to follow XWikiDocument (from scratch I think
>>> I would prefer getRedirectURL but it's simpler to follow already
>>> existing API for now)
>>> * we can refactor later the .vm and wiki page to support this new
>>> configuration. What's important right now is to allow someone to come
>>> back to old behavior for whatever reason (which sounds a lot less
>>> necessary to me now that I know that we actually use a lot of relative
>>> URL in sendRedirect) but better be safe since it does not cost a lot
>>> here and I plan to introduce this in xwiki.cfg only
>>>
>>> WDYT ?
>>
>>
>> I don't really see the point. We should just leave them relative, adding yet
>> another getURL method will only bloat the API even more.
>
> Yes we can forget about the public API for now, it's not very
> important. As for the configuration I see it more as a
> retro-compatibility security, sometimes you can't or don't know how to
> properly setup you application server or httpd and setup xwiki.home
> and things like that. It's important to have the right behavior by
> default (relative) but since it does not cost much to add a if in
> XWikiDocument#getURL and that it's enough to go back to previous
> behavior for anyone that need to it's probably safer.

Here is what I plan to introduce:

#-# [Since 4.0RC1]
#-# Indicate if the URL used in HTTPSevlet#sendRedirect should be made
absolute by XWiki or left to application server.
#-# Sending absolute URLs is a bad practice and generally not needed.
This option is mostly here as retro-compatibility
#-# switch and you should always make sure to properly configure your
application server or any proxy behind it before
#-# using this.
#-# 0: send relative URLs (the default)
#-# 1: send absolute URLs
# xwiki.redirect.absoluteurl=0

>
>>
>> Perhaps I wasn't making myself clear, I'm not against using relative URLs in
>> sendRedirect, I'm saying that the fact that we switch to relative URLs
>> doesn't really solve the problem, which is that XWiki doesn't know the
>> external host and protocol, it will just hide it into less frequently used
>> features, like PDF export, which makes it harder to spot the fact that the
>> configuration isn't correct.
>>
>>
>>> On Wed, Mar 21, 2012 at 1:10 AM, Thomas Mortagne
>>> <[email protected]>  wrote:
>>>>
>>>> On Tue, Mar 20, 2012 at 11:36 PM, Sergiu Dumitriu<[email protected]>
>>>>  wrote:
>>>>>
>>>>> On 03/20/2012 03:39 AM, Thomas Mortagne wrote:
>>>>>>
>>>>>>
>>>>>> Hi devs,
>>>>>>
>>>>>> In HTTP specifications a redirect is always absolute URL which is
>>>>>> probably why we use absolute URL with sendRedirect.
>>>>>>
>>>>>> However sendRedirect does not produce direct HTTP response but allows
>>>>>> relative URL and delegate to the application server the job of
>>>>>> producing proper absolute URL.
>>>>>>
>>>>>> IMO XWiki should always use relative URL everywhere it can so I
>>>>>> propose to change our practice to use relative URL instead of absolute
>>>>>> URL with HttpSevletResponse#sendRedirect when possible.
>>>>>>
>>>>>> The only reasons I see to use external URLs are:
>>>>>> * interwiki URL in a  domain based multiwiki
>>>>>> * html/pdf export for links pointing on not exported pages or non view
>>>>>> actions
>>>>>>
>>>>>> WDYT ?
>>>>>
>>>>>
>>>>>
>>>>> I don't think this will actually solve the problem.
>>>>
>>>>
>>>> What problem ? If you are talking about
>>>> http://jira.xwiki.org/browse/XWIKI-7632 it did fixed the issue in this
>>>> specific use case as I said on the issue itself.
>>>>
>>>>> As long as XWiki doesn't
>>>>> know the correct URL to use, I doubt that the container will do any
>>>>> better.
>>>>> I just tested this on Apache HTTPD + mod_proxy_http going to Jetty, and
>>>>> it
>>>>> didn't solve the problem.
>>>>
>>>>
>>>> Probably mean you did not properly configured your reverse proxy but
>>>> in my use case it was done right.
>>>>
>>>>>
>>>>> For the PDF export, all URLs must be external. A relative URL in a PDF
>>>>> doesn't have a base URL to work with, since the PDF is a standalone
>>>>> document. That's why we use a special URLFactory when exporting PDFs.
>>>>
>>>>
>>>> I know we are using a special URLFactory for pdf export. If a document
>>>> pointing to itself or to another document exported in the same pdf is
>>>> an external URL with sheme/host/port then there is something pretty
>>>> wrong in the pdf export. Anyway that's not really the subject of the
>>>> proposal.
>>>>
>>>>>
>>>>>
>>>>>> Here is my +1. We very often fix bugs in the way to produce external
>>>>>> URL and it's still not OK (see
>>>>>> http://jira.xwiki.org/browse/XWIKI-7632) so lets reduce the scope for
>>>>>> this need as much as possible.
>>>>>>
>>
>>
>> --
>> Sergiu Dumitriu
>> http://purl.org/net/sergiu/
>> _______________________________________________
>> devs mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/devs
>
>
>
> --
> Thomas Mortagne



-- 
Thomas Mortagne
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to