[Zope-dev] __before_publishing_traverse__ calls RESPONSE.redirect(): is there another way to change the browser URL?

Craeg K Strong cstrong@arielpartners.com
Fri, 27 Sep 2002 14:58:53 -0400


Thanks for the advice!

Unfortunately, I don't know how to do what you suggest.

I believe that a redirect always causes a GET, rather than a POST, no?

Also, hidden form fields are filled in on the original request, but the redirect
flushes the request.  All of my fields are gone!  :-(

Perhaps I could do something really nasty and override the Python method
in urllib2 that handles HTTP redirects?

Today, that code creates a new REQUEST object, throwing away the old request.
I could cause it to insert some value that I would then test for,
to distinguish the two cases.

That would be the king of all hacks, but it might work :-}

--Craeg

Florent Guillaume wrote:
> Craeg K Strong  <cstrong@arielpartners.com> wrote:
> 
>>However, I would like to distinguish between two cases:
>>
>>a) Direct Navigation:   e.g.I am a user and I just typed in
>>
>>http://acme.com/myapp/contracts/TRW-001/taskorders/TO-01/invoices/DSDC-001-9301
>>
>>into my browser
>>
>>b) Application-Controlled:   e.g. I am the application, I did some processing
>>based on a button the user pressed in some form somewhere and determined
>>that the next URL should be
>>
>>http://acme.com/myapp/contracts/TRW-001/taskorders/TO-01/invoices/DSDC-001-9301
>>
>>====Now here is the issue====
>>
>>In both cases above, the REQUEST object looks identical.   Is there any way
>>that I can distinguish a GET that is the result of a REDIRECT from one that
>>is not?
>>
>>I would think this would be of interest to others.  For example, if I move my
>>web page and put a redirect from the old address, I could track how many
>>people came to my web page directly versus those that are still using the
>>old address and are getting redirected.
> 
> 
> You could try to do a POST and distinguish that from the GET when the
> user just types the URL. But it's probably better to add a special
> hidden field in your form to distinguish the two.
> 
> Florent