[Error Note] java.lang.IllegalStateException: closed 해결 방법 [ResponseBody.string()을 여러 번 호출]
·
◈ Study/에러노트(Error Note)🧱
- java.lang.IllegalStateException: closed 해결 방법 java.lang.IllegalStateException: closed at okio.RealBufferedSource.select(RealBufferedSource.kt:218) at okhttp3.internal.Util.readBomAsCharset(Util.kt:265) at okhttp3.ResponseBody.string(ResponseBody.kt:187) at G2B.g2b.service.BidService.testAPI(BidService.java:716) at G2B.g2b.controller.MainController.index(MainController.java:20) at java.base/jdk..
[Spring] ResponseEntity의 유용한 메소드들 [200 OK, 400 Bad Request, 404 Not Found, 201 Created 등]
·
▣ Framework/Spring🍃
- ResponseEntity의 유용한 메소드들1. ResponseEntity.ok(): 200 OK 응답 반환return ResponseEntity.ok("성공");2. ResponseEntity.badRequest(): 400 Bad Request 응답 반환return ResponseEntity.badRequest().body("잘못된 요청입니다.");3. ResponseEntity.notFound(): 404 Not Found 응답 반환return ResponseEntity.notFound().build();4. ResponseEntity.created(): 201 Created 응답 반환 (새로운 리소스 생성 시)URI location = URI.create("/resource/1");return..
[Spring] ResponseEntity란? [HTTP 응답을 생성할 때 매우 유용한 클래스]
·
▣ Framework/Spring🍃
- ResponseEntity란?ResponseEntity는 Spring에서 HTTP 응답을 생성할 때 매우 유용한 클래스이다. 상태 코드, 헤더, 본문을 자유롭게 조작할 수 있기 때문에 다양한 HTTP 응답을 세밀하게 제어할 수 있다.- 기본 사용법 // 기본적인 ResponseEntity 사용 예시ResponseEntity response = new ResponseEntity(body, HttpStatus.OK);- 주요 사용 예시들 1) 기본적인 응답 ResponseEntity.ok() : 상태 코드 200 OK와 함께 응답 본문 반환 @ResponseBody@PostMapping("/example")public ResponseEntity example() { // 정상적으로 처리된 응답 ..
[CSS] 웹 접근성을 높이는 CSS 포커스 링 스타일링 [outline, box-shadow, focus-visible 활용법]
·
◎ HTML5+CSS3/CSS3🎨
- 웹 접근성을 높이는 CSS 포커스 링 스타일링1. outline을 이용한 포커스 링 스타일 조정 button:focus { outline: 2px solid #ff0000; /* 빨간색 포커스 링 */ outline-offset: 4px; /* 테두리와의 간격 */}2. box-shadow를 이용한 커스텀 포커스 효과 button:focus { outline: none; /* 기본 포커스 제거 */ box-shadow: 0 0 5px 2px rgba(0, 150, 255, 0.8); /* 파란색 발광 효과 */}3. focus-visible을 이용한 개선된 접근성 button:focus-visible { outline: 3px dashed #00ff00; /* 초록색 점선 포커스 */}
[study] JSESSIONID와 tracking-mode 설정 방식 [클라이언트와 세션 ID를 주고받는 방식을 설정하는 속성]
·
◈ Study/기초튼튼 개발지식🥔
- JSESSIONID와 tracking-mode 설정 방식tracking-mode는 Java EE (Jakarta EE) 웹 애플리케이션에서 세션 ID를 클라이언트와 주고받는 방식을 설정하는 속성이다. 즉, JSESSIONID를 어떻게 전달할지 결정하는 역할.- tracking-mode 설정 방식 1) cookie (기본값)JSESSIONID를 쿠키를 통해 전달하는 방식가장 일반적이고 보안이 우수함브라우저가 쿠키를 차단하면 세션이 유지되지 않음- 설정 방법 (web.xml에서 설정) COOKIE2) url (URL 리라이트)JSESSIONID를 URL에 추가하는 방식쿠키를 지원하지 않는 환경에서도 세션 유지 가능하지만 보안 취약점(Session Hijacking 등)이 있음 예제 URL (URL ..
[Error Note] URL 리라이트 때문에 request block 발생하는 문제 해결하기 [;jsessionid=xxx가 사용되면서 request block 발생]
·
◈ Study/에러노트(Error Note)🧱
- URL 리라이트 때문에 request block 발생하는 문제 해결하기WAF, 방화벽 등에서 ;jsessionid=xxx가 포함된 URL을 비정상적인 요청으로 간주하고 차단한다.- 해결 방법1) WAF 예외 설정WAF 또는 방화벽에서 ;jsessionid= 패턴을 허용하도록 설정보안 정책을 조정하여 특정 URL에서는 JSESSIONID 포함을 허용2) 쿠키 기반 세션 유지로 변경가능하면 JSESSIONID를 URL이 아니라 쿠키 방식으로만 사용하도록 설정web.xml에서 URL 리라이트를 비활성화 disableURLRewriting true [study] URL 리라이트(URL Rewriting)란 무엇인가? [JSESSIONID를 URL에 포함하는 방식]- URL 리라이트(URL Rewr..
[study] URL 리라이트(URL Rewriting)란 무엇인가? [JSESSIONID를 URL에 포함하는 방식]
·
◈ Study/기초튼튼 개발지식🥔
- URL 리라이트(URL Rewriting)란 무엇인가? 쿠키를 사용할 수 없는 환경에서도 세션을 유지하기 위해 JSESSIONID를 URL에 포함하는 방식- 왜 URL 리라이트를 사용하는 걸까?1) 쿠키 비활성화 환경 지원 어떤 사용자들은 브라우저 설정에서 쿠키를 차단하거나, 쿠키 없는 환경(일부 프라이버시 모드)에서 접속할 수도 있음. 이때 URL 리라이트를 사용하면 세션이 끊기지 않고 유지가 됨.쿠키를 지원하지 않는 브라우저쿠키가 차단된 환경(보안 정책, 프라이버시 설정 등)2) 초기 로그인 페이지에서 세션 유지 어떤 웹 애플리케이션에서는 초기 요청에서 쿠키를 설정하기 전에 세션이 필요할 수 있음. 이 경우, URL에 JSESSIONID를 포함해 사용자를 식별함.3) 서드파티 쿠키 차단 우회 ..