2009-11-25 11 views
13

서버로 전달되는 HTTP 요청에서 쿠키를 제거해야합니다. 이 쿠키를 쓰는 클라이언트 또는 서버를 읽는 것은 옵션이 아닙니다. 아파치 2.0은 클라이언트와 서버 사이의 요청을 프록시 처리하기 때문에 mod_rewrite를 사용하여 Apache에서 바로 쿠키를 제거하기를 바랬습니다.Apache에서 쿠키를 제거하는 방법

제 질문은 mod_rewrite를 사용하여 HTTP 요청에서 특정 쿠키를 제거하는 방법이 있습니까? 불가능이 경우

요청에서 모든 쿠키를 제거하는 최후의 수단으로 다음 단지 쿠키를 제거하려면?

mod_rewrite가이 작업에 적합한 도구가 아닌 경우이 작업을 수행하는 방법에 대한 다른 제안이 있습니다.

+3

당신은 모드와 쿠키를 설정하는 것이 가능하다 CO 플래그 –

답변

19

Apache mod_rewrite은 URL을 조작 할 수는 있지만 HTTP 헤더는 조작 할 수 없지만 'mod_headers'을 사용하면 그렇게 할 수 있습니다.

그래서, 당신은 사용할 수 있습니다

RequestHeader unset Cookie 

이 요청에서 모든 쿠키를 제거합니다. 이 기술을 사용하여 특정 쿠키를 제거 할 수 있는지 확실하지 않습니다.

다른 방법으로는 사용하여 쿠키를 클라이언트로 전달되는 중지 할 수 있습니다

Header unset Set-Cookie 

을 그 더 적절한 있다면.

+0

를 사용하여 mod_rewrite를를 사용하여 쿠키를 다시 작성할 수 있습니다 (정적 콘텐츠를 제공하는 것이 좋다) \_고쳐 쓰기. 하지만 내가 아는 한은 고객에 대한 응답 일뿐입니다. – Gumbo

+0

복사/붙여 넣기 FTW. –

7

당신은 아파치 역방향 프록시 구성에서 다음 문을 사용하여 특정 쿠키를 관리 할 수 ​​있습니다 : 당신이 사용할 수있는 특정 쿠키 제거하려면

을 :
''헤더는 "ANY_COOKIE = 설정 - 쿠키를 추가는 '='SOME_DATE_IN_PAST을 '만료 ; Max-Age = 0; 경로 = COOKIE_PATH " '

지난 날짜를 지정하면 브라우저에 쿠키가 만료되었다는 것을 알리고 브라우저는 쿠키를 삭제합니다.

당신이 사용할 수있는 쿠키 추가하려면 :
'설정 - 쿠키 추가 헤더를 "ANY_COOKIE을 ='ANY_VALUE는, SOME_FUTURE_DATE '= 만료'를 '; 경로 = COOKIE_PATH"'

당신은 몇 가지를 지정해야합니다을 미래의 날짜. 날짜를 지정하지 않으면 쿠키가 세션 쿠키로 처리됩니다.

요청에서 특정 쿠키를 제거하려면 다음을 사용해보십시오 :

'에 RequestHeader 쿠키를 추가 "ANY_COOKIE =' '; 만료 ='SOME_PAST_DATE '; 경로 = COOKIE_PATH"'아파치> 2.2

+1

요청에서 특정 쿠키를 제거하려면 다음 사용해보십시오 : ** '에 RequestHeader 쿠키를 추가 "=이 ANY_COOKIE를'나는에 RequestHeader이 쿠키는 실제로 3 개 쿠키를 생성합니다 추가 생각 '** –

+0

'; 경로 = COOKIE_PATH = 'SOME_PAST_DATE을'만료" . (ANY_COOKIE, 만료 됨 및 경로)이 필요하지 않을 수 있습니다. –

6

.4, you could have used :

RequestHeader edit Cookie "^(.*?)ANY_COOKIE=.*?;(.*)$" $1$2 
+4

이 :'에 RequestHeader 편집 쿠키 : |; 헤더가'로 끝나지 않는 경우에도 작동 2' $ 1 $,' "^ ssosession = * $ (. *?).? ($?) (*.)". – Simon

+0

'에 RequestHeader 편집 쿠키 ANY_COOKIE = [^] * ($ |) ""'도 작동합니다 : 접두사/접미사 부분을 캡처하고 다시 넣어하지 않아도 이런 식으로. – Coke

0

내가 해제 이것을 사용하는 모든 쿠키

Header unset Cookie 
Header unset Set-Cookie