On Mon, Dec 10, 2012 at 3:04 PM, Igor Cicimov <icici...@gmail.com> wrote:

> On Mon, Dec 10, 2012 at 2:10 PM, <oh...@cox.net> wrote:
>
>>
>> ---- Igor Cicimov <icici...@gmail.com> wrote:
>> > On Mon, Dec 10, 2012 at 11:02 AM, <oh...@cox.net> wrote:
>> >
>> > >
>> > > ---- Igor Cicimov <icici...@gmail.com> wrote:
>> > > > On Mon, Dec 10, 2012 at 9:02 AM, <oh...@cox.net> wrote:
>> > > >
>> > > > >
>> > > > > ---- Igor Cicimov <icici...@gmail.com> wrote:
>> > > > > > On Mon, Dec 10, 2012 at 7:19 AM, <oh...@cox.net> wrote:
>> > > > > >
>> > > > > > > Hi,
>> > > > > > >
>> > > > > > > We are trying to have an Apache (acting as a proxy)
>> conditionally
>> > > > > > > strip/remove a cookie from the incoming request, before it
>> proxies
>> > > the
>> > > > > > > request.
>> > > > > > >
>> > > > > > > The condition is that, on the incoming request:
>> > > > > > >
>> > > > > > > - there is a specific HTTP header, MYHEADER, with a value of
>> > > > > > > "MYHEADERVALUE", and
>> > > > > > > - the root of the request URL's hostname (e.g., if hostname
>> in the
>> > > > > request
>> > > > > > > URL is "www.foo.com", then root is ".foo.com") matches a
>> certain
>> > > > > string,
>> > > > > > > e.g., ".whatever.com"
>> > > > > > >
>> > > > > > > If the conditions above are true, then we want to remove a
>> cookie
>> > > named
>> > > > > > > "MYCOOKIE" from the incoming request, before forwarding the
>> request
>> > > > > onto
>> > > > > > > the proxied host.
>> > > > > > >
>> > > > > > > I think that if the conditions match, according to this:
>> > > > > > >
>> > > > > > >
>> > > > >
>> > >
>> http://stackoverflow.com/questions/1798431/how-to-remove-a-cookie-in-apache
>> > > > > > >
>> > > > > > > something like:
>> > > > > > >
>> > > > > > > RequestHeader add Cookie
>> "MYCOOKIE='';expires='SOME_PAST_DATE';
>> > > > > > > Path=COOKIE_PATH"
>> > > > > > >
>> > > > > > > would remove the cookie, but I'm not sure how to construct the
>> > > > > > > expression/expr that says something like this:
>> > > > > > >
>> > > > > > > <If hostname_root==whatever.com && MYHEADER=<some_string>>
>> > > > > > >         RequestHeader add Cookie
>> > > "MYCOOKIE=';expires='SOME_PAST_DATE';
>> > > > > > > Path=COOKIE_PATH"
>> > > > > > > </If>
>> > > > > > >
>> > > > > > > Also, I'm not sure what that "SOME_PAST_DATE" should be.
>> > > > > > >
>> > > > > > > Can anyone here tell me?
>> > > > > > >
>> > > > > > > Thanks,
>> > > > > > > Jim
>> > > > > > >
>> > > > > > >
>> > > ---------------------------------------------------------------------
>> > > > > > > To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org
>> > > > > > > For additional commands, e-mail: users-h...@httpd.apache.org
>> > > > > > >
>> > > > > > >
>> > > > > > Use SetEnvIf
>> > > > >
>> > > > >
>> > > > > Igor,
>> > > > >
>> > > > > I think that I can use SetEnvIf to set environment variables for
>> each
>> > > of
>> > > > > the two conditions, but doesn't the RequestHeader directive only
>> take
>> > > only
>> > > > > a single condition, e.g., "env=condition1"?
>> > > > >
>> > > > > Jim
>> > > > >
>> > > > >
>> ---------------------------------------------------------------------
>> > > > > To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org
>> > > > > For additional commands, e-mail: users-h...@httpd.apache.org
>> > > > >
>> > > > > True, so how about this ... You set the cookie if "env =
>> condition1"
>> > > and
>> > > > then edit/unset/merge/ or do whatever if "env != condition2"
>> > >
>> > >
>> > > Hi,
>> > >
>> > > Thanks for the suggestion.  I guess that I'd really rather not set the
>> > > cookie then possibly have to unset it later.  That seems a little too
>> > > convoluted.
>> > >
>> > > What I was trying to find out with this post is about how something
>> like
>> > > SetEnvIfExpr:
>> > >
>> > > http://httpd.apache.org/docs/trunk/mod/mod_setenvif.html#setenvifexpr
>> > >
>> >
>> > That link has the word "trunk" in it which usually means "current
>> > development version". And if you check the bread crumbs in the top of
>> the
>> > page you'll see
>> >
>> > [image: <-] <http://httpd.apache.org/docs/trunk/mod/>
>> >  Apache <http://www.apache.org/> > HTTP Server <
>> http://httpd.apache.org/> >
>> > Documentation <http://httpd.apache.org/docs/> > Version
>> > 2.5<http://httpd.apache.org/docs/trunk/>>
>> > Modules <http://httpd.apache.org/docs/trunk/mod/>
>> >
>> > it is a Apache 2.5 module. If you need to use this feature AND <If> tags
>> > you need Apache 2.4
>> >
>> >
>> > >
>> > > might be used.
>> > >
>> > > Apparently this SetEnvIfExpr is available in Apache 2.2.9+?
>> > >
>> > > That page has some examples of using SetEnvIfExpr, e.g.:
>> > >
>> > > SetEnvIfExpr "tolower(req('X-Sendfile')) == 'd:\images\very_big.iso')"
>> > > iso_delivered
>> > >
>> > > plus, it links to this other page on expressions in Apache:
>> > >
>> > > http://httpd.apache.org/docs/trunk/expr.html
>> > >
>> > > which has examples of expressions:
>> > >
>> > > # Compare the host name to example.com and redirect to
>> www.example.com if
>> > > it matches
>> > > <If "%{HTTP_HOST} == 'example.com'">
>> > >     Redirect permanent / http://www.example.com
>> > > </If>
>> > >
>> > > So I was thinking I could use something like that, but I'm not
>> familiar
>> > > with these "expressions", so I was hoping that someone here could
>> tell me
>> > > (or point the way to) the expression that I'd need to do what I
>> described
>> > > in my original post.
>> > >
>> > > Also, BTW, I'm having problems with what was suggested in the message
>> > > thread on Stackoverflow.com in my original post.  I tried the
>> suggested
>> > > RequestHeader, to try to remove a cookie in an incoming request, but
>> it's
>> > > not working.  Rather it looks like it just replaces the entire
>> "Cookie:"
>> > > header altogether.  FYI, for this testing, I have my Apache proxying
>> > > (ProxyPass/ProxyPassReverse) a Tomcat instance.
>> > >
>> > > Thanks,
>> > > Jim
>> > >
>> > >
>> > >
>> > > ---------------------------------------------------------------------
>> > > To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org
>> > > For additional commands, e-mail: users-h...@httpd.apache.org
>> > >
>> > >
>>
>>
>> Hi Igor,
>>
>> I realized that a little while ago, and just built 2.4.3, and yes, the
>> <If> works, or at least it doesn't throw and error with that.
>>
>> Any idea on what the expr should look like to do what I was asking about?
>>  I'm still trying to figure that out.  If anyone knows, or maybe give me
>> some hints, I'd appreciate that.
>>
>> Thanks,
>> Jim
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org
>> For additional commands, e-mail: users-h...@httpd.apache.org
>>
>>
> Try this (completely untested):
>
> SetEnvIfNoCase ^My_Header$ MYHEADERVALUE has_the_header
> SetEnvIfNoCase %{HTTP_HOST} ^(www.)?example.com" has_the_hostname
> <If env('has_the_header') && env('has_the_hostname')>
>    RequestHeader unset Cookie
> </If>
>

Uh forgot to mention that if My_Header is some arbitrary header then I have
no idea how can you check it in Apache. Maybe try:

SetEnvIfNoCase %{HTTP:My_Header} MYHEADERVALUE has_the_header

and if that doesn't work then I guess you need some CGI script in your case.

Reply via email to