httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Zhang <john_zzh...@yahoo.com>
Subject Re: Is there are any way to know if the request is regular (http) or SSL (https) in a module?
Date Tue, 18 Dec 2007 17:12:56 GMT

--- Graham Dumpleton <graham.dumpleton@gmail.com>
wrote:

> On 18/12/2007, Sander Temme <sctemme@apache.org>
> wrote:
> >
> > On Dec 17, 2007, at 6:36 PM, Eric Covener wrote:
> >
> > >> I would like to know the request type in my
> module
> > >> (handler/filter), is there any way to know that
> (HTTP
> > >> vs HTTPS)?
> > >
> > > apr_table_get(r->subprocess_env, "HTTPS")  might
> be  what you want
> >
> > That gets set in the Fixup hook, relatively late
> in the request
> > processing process.  You could call
> ap_http_scheme(r) to run the
> > request scheme hook, which will return "https" if
> SSL is disabled or
> > optional on the vhost that accepted the request.
> 
> Or better still, use the function registered by the
> ssl module for the purpose:
> 
> #if AP_SERVER_MAJORVERSION_NUMBER >= 2
> APR_DECLARE_OPTIONAL_FN(int, ssl_is_https, (conn_rec
> *));
> static APR_OPTIONAL_FN_TYPE(ssl_is_https)
> *wsgi_is_https = NULL;
> #endif
> 
>    ...
> 
>    if (!wsgi_is_https)
>         wsgi_is_https =
> APR_RETRIEVE_OPTIONAL_FN(ssl_is_https);
> 
>     if (wsgi_is_https &&
> wsgi_is_https(r->connection))
>         apr_table_set(r->subprocess_env, "HTTPS",
> "1");
> 
> Ie., HTTPS is set by the above sort of process, but
> as pointed out
> that is done only in fixup phase, but you can call
> the ssl_is_https()
> function direct if in earlier phase.
> 
Thanks everyone!  All very useful to me!

Mime
View raw message