기본 콘텐츠로 건너뛰기

2020의 게시물 표시

(java) 크롬에서 쿠키 삭제 안되는 경우

  java에서 쿠키 삭제하는 방법은 똑같은 이름의 쿠키를 만들고 업데이트 하는 방식이다.  이때 maxAge를 '0' 으로 설정한다.  그래서 아래처럼 코딩한결과  크롬을 제외한 나머지 브라우저에서는 전부 쿠키가 삭제가 되었으나 크롬만 삭제가 되지 않았다.  문제의코드 Cookie cookie = new Cookie(name , null ) ; cookie.setHttpOnly( false ) ; cookie.setMaxAge( 0 ) ; cookie.setPath( "/" ) ; cookie.setDomain( "test.co.kr" ) ; 결론만 얘기하면  Secure 설정을 ture로 추가해서 해결했다.  https, ssl 기반에서만 주고받을 수 있게된다.  public void setSecure ( boolean flag) { secure = flag ; } /** * Returns <code> true </code> if the browser is sending cookies only over a * secure protocol, or <code> false </code> if the browser can send cookies * using any protocol. * * @return <code> true </code> if the browser uses a secure protocol; * otherwise, <code> true </code> * @see #setSecure */ 원인은 이사이트의 쿠키설정중 samesite가 'none' 으로 설정되어있었다.  samesite가 none인 경우에는 반드시 secure 옵션을 같이 넣어줘야 크롬에서 정상동작한다. (chrome 80 버전 업데이트 이슈) 웹서버에서 변경하고 싶으면 nginx.c...

(java) try-with-resources

https://www.baeldung.com/java-try-with-resources try 구문절에 resources 사용구문을 입력할 수 있다. 1 2 3 try (PrintWriter writer = new PrintWriter( new File( "test.txt" ))) {      writer.println( "Hello World" ); } 구문절에 기존에 try-catch-finally를 사용할때는 보통 아래처럼 한다. try에서 열어주고, finally에서 닫아주고  1 2 3 4 5 6 7 8 9 10 11 12 13 Scanner scanner = null ; try {      scanner = new Scanner( new File( "test.txt" ));      while (scanner.hasNext()) {          System.out.println(scanner.nextLine());      } } catch (FileNotFoundException e) {      e.printStackTrace(); } finally {      if (scanner != null ) {          scanner.close();      } } 이걸 다시 try-with-resources 방식으로 하면 1 2 3 4 ...