ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: как удалить куку из request header?



Hello!

On Fri, Dec 09, 2011 at 04:36:48AM -0500, vgoncharov wrote:

> Всем привет!
> 
> Подскажите, как правильно удалить куку
> из заголовка запроса?
> При этом в заголовке кук несколько, а
> надо удалить только одну с именем
> jstree_open.
> 
> Вот подробная причина, по которой это
> надо.
> 
> Backend достаточно неповоротливый в
> настройках: Oracle XML DB Server
> Frontend: nginx
> 
> Веб-приложение использует jstree для
> отображения иерархических данных.
> Состояние узлов дерева
> (открыто/закрыто) запоминается в куке
> jstree_open.
> При этом это приложение использует и
> другие куки.
> 
> Каждая из кук нужна для правильной
> работы backend'а, однако кука jstree_open на
> бакэнде совергенно бесполезна. Прои
> этом на больших деревьях создается
> большая кука jstree_open. Backend при получении
> такой большой куки выдает 500 Internal Server
> Error.
> 
> Предполагаемое решение: необходимо
> удалить одну (только одну) куку jstree_open
> из заголовка запроса перед передачей
> его на backend.
> 
> Предполагаемое неправильное понимание
> вопроса: client_header_buffer_size и large_client_header_buffers
> не могут решить проблемы, так как
> проблема не в nginx, а в backend. Nginx же с
> имеющимися куками справляется
> (благодаря этим настройкам).
> 
> Другое предполагаемое неправильное
> решение: Удаление заголовка запроса
> Cookie: не поможет, так как приложение
> требует наличия всех остальных кук
> (несколько штук).

Выкусывайте нужное из $http_cookie, а дальше

    proxy_set_header Cookie "то что осталось";

Выкусить, наверное, даже получится с помощью модуля rewrite (if с 
регулярым выражением + set).  Как-то так:

    set $rest $http_cookie;
    if ($http_cookie ~ "^(.*[,; ])?jstree_open=[^,;]*(.*)$") {
        set $rest "$1$2";
    }

    proxy_set_header Cookie $rest;

Completely untested, регулярное выражение скорее всего требует 
доработки. 

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.