How to change cookie header in a filter?

Cool coolbsd at hotmail.com
Thu Mar 21 16:17:14 UTC 2013


Got it, thanks, appreciate.

-C
于 13-3-20 上午1:38, Maxim Dounin 写道:
> Hello!
>
> On Tue, Mar 19, 2013 at 11:50:43AM -0700, Cool wrote:
>
>> Thanks Maxim, I got what you mean.
>>
>> Since I'm using fastCGI so I put something like this:
>>
>> fastcgi_param HTTP_COOKIE "$http_cookie; mycookie=$cookie_note";
>>
>> (I populated cookie_note in my filter already, this was done for
>> logging purpose thus it is just a reuse of existing facility)
>>
>> More problems come with this solution:
>>
>> 1. it seems fastcgi_param called before my filter so $cookie_note
>> always got empty, and
> You shouldn't rely on your filter already executed, and should
> instead register a variable handler which does the actual work.
> This way it will work at any time.
>
>> 2. it seems fastcgi_param could not be used in a if directive so I
>> end up with change the cookie header even the mycookie is presented
>> in user's request, thus
> If there are conditions when you should not add a cookie I would
> recommend you implementing a variable with full Cookie header you
> want to pass, e.g.
>
>      fastcgi_param HTTP_COOKIE $my_new_cookie;
>
> This way you may implement arbitrary conditions you want in your
> module.  (You may also construct the variable using if/set/map/etc, but
> doing appropriate tests in your module would be less error prone.)
>



More information about the nginx mailing list