On 10/5/05, Martin Matusiak <[EMAIL PROTECTED]> wrote:
> I need a way to check whether the current servlet was accessed through https
> or not. If not, I want to rewrite the url to https and inform the user. How
> can I check this?
>
> I'm using webware 0.8.

Here is what I do in one of my apps: In SitePage, which is the
ancestor class of all my pages, I have:

class SitePage(Page):

        requiredProtocol = 'http://'  # subclasses could override to be
'https://'. logic in _respond() does the right thing


then in particular servlets, I say:

class Dashboard(SitePage):

        requiredProtocol = 'https://'


The code that enforces this is in SitePage and follows. "It works for
me." Also, Christoph's technique of checking the port looks
interesting as it removes the reliance on SCRIPT_URI which on older
versions of Apache (I don't know about newer ones) only exists if
mod_rewrite is on.

        def _respond(self, trans):
                req = self.request()
                uri = req.environ().get('SCRIPT_URI', None)
                if uri is not None:  # SCRIPT_URI is not standard. typically
provided by mod_rewrite
                        if self.isProduction:  # typically only prod has 
https:// working
                                if req.method()!='POST':  # there's no way to 
redirect a user
agent to POST to diff URL
                                        if not 
uri.startswith(self.requiredProtocol) and not
uri.lower().startswith(self.requiredProtocol):
                                                # okay, the URI is *not* using 
the required protocol. fix it:
                                                qs = req.queryString()
                                                qs = qs and '?'+qs or ''
                                                uri = self.requiredProtocol + 
uri.split('://', 1)[1] + qs
                                                uri = uri.replace('/www.', '/') 
# SCRIPT_URI seems to always
include the host name, but at SA we do the opposite
                                                
self.response().sendRedirect(uri)
                                                return
                Page._respond(self, trans)


-Chuck


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
Webware-discuss mailing list
Webware-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/webware-discuss

Reply via email to