Spring 컨트롤러에서 쿠키를 아무리 만들어봤자 안된다.

아래처럼 사용하면 쿠키가 잘 구워진다.



CookieGenerator cookieGer = new CookieGenerator();

cookieGer.setCookieName("cookie_value_test");
cookieGer.addCookie(response, "suromind");


//쿠키조회

String cookieValue = "";

Cookie[] cookies = req.getCookies();

if (cookies != null && cookies.length > 0) {

for (Cookie cookie : cookies) {

if (cookieName.equals(cookie.getName())) {

cookieValue = cookie.getValue();

}

}

}


[출처] Spring 에서 Cookie 사용|작성자 쫑스



일반 웹브라우저상에서 접속시에는 접속이 잘 되지만

자바코드의 HttpClient를 이용하여 요청을 할때 아래와 같은 형태의 html이 리턴되어 올때가 있다.

<html><script lang=javascript>
document.cookie = '_accessKey2=rWb4P3PxLVoA9rec*6o3kc9X8bhIb3IR'
window.location.reload();
</script></html>

일단 보니 어떤 url을 치던지 간에 무조껀 저 코드가 뜬다.

구글링결과 웹서버 웹브라우저를 감지하지 않냐는 의견이 좀 있었다.
user-agent나 쿠키를 셋팅해서 보내라는 글들이 많았다.

일단 쿠키를 셋팅해서 해보니 요청이 잘된다.. ㅜ

안드로이드에서는 아직 테스트는 안해봤고 이클립스 콘솔에서만 테스트를 해봤다.
안드로이드도 잘 되겠지요..클래스가 약간 틀리면 수정점 하시구요

===============================================================================
                CookieStore cookieStore = new BasicCookieStore();
                BasicClientCookie cookie = new BasicClientCookie("abcd", "0000");
                cookie.setVersion(1);
                cookie.setDomain("해당 도메인"); // ex : www.tistory.com
                cookie.setPath("/");

                cookieStore.addCookie(cookie);
               
                HttpContext localContext = new BasicHttpContext();
                // Bind custom cookie store to the local context
                localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
                ((DefaultHttpClient)httpclient).setCookieStore(cookieStore);
===============================================================================

httpclient.execute() 함수를 호출하기 전에 위 코드를 넣으면 된다.
도메인이 틀리면 또 안된다.. 주의 하시기 바랍니다.

쿠키 셋팅하는 부분은 아파치 HttpClient 문서를 참조하였습니다.
  • 사티엘 2011.10.11 17:25

    위의 내용 전체 소스좀 메일로 받아볼수 있을까요??
    저도 똑같은 증상이라서 위의 소스를 삽일 헀느데 똑같네요..

    stim97@hotmail.com 입니다.

    • suroMind 2011.10.11 17:44 신고

      예전에 했던부분인데.. 어디 있는지 모르겠네요..

      서버가 IIS 이신가요?
      전 관공서쪽 서버였는데
      기본적으로 웹접속 이외의 접속은 방화벽으로
      막아버린다고 하더군요..

      관공서 담장자에게 연락해서 방화벽 열고
      쿠키심고 했더니 되더군요..

      쿠키빼면 또 안되고..
      방화벽 한번 확인해보시기 바랍니다