π™±πšŠπšŒπš”πšŽπš—πš

배포 ν™˜κ²½μ—μ„œ Mixed Content 였λ₯˜λ₯Ό ν•΄κ²°ν•˜λŠ” 방법을 ν¬μŠ€νŒ…ν•΄λ³΄λ € ν•œλ‹€. 1. ν™˜κ²½μ›Ή μ„œλ²„ (Front): Nginx→ λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ 역할을 ν•˜λ©°, SSL(HTTPS)을 Nginxμ—μ„œ 쒅단 μ²˜λ¦¬μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„ (Back): Tomcat→ JSP 기반 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ war νŒ¨ν‚€μ§€λ‘œ λ°°ν¬λ˜μ–΄ 있음HTTPS 처리 방식:ν΄λΌμ΄μ–ΈνŠΈλŠ” HTTPS둜 접속Nginxκ°€ SSL 톡신을 μ²˜λ¦¬ν•œ ν›„, Tomcatμ—λŠ” HTTP둜 μš”μ²­μ„ 전달 2. 문제 상황JSP λ‚΄μ—μ„œ Java μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹€μŒκ³Ό 같이 μš”μ²­ 정보λ₯Ό κ°€μ Έμ™”λ‹€:request.getScheme(); // ν”„λ‘œν† μ½œ (http λ˜λŠ” https) request.getServerPort(); // 포트 번호 ν•˜μ§€λ§Œ λ‹€μŒκ³Ό 같은 λ¬Έμ œκ°€ λ°œμƒν–ˆλ‹€:λΈŒλΌμš°μ €μ—μ„œ ..
Clovaμ—μ„œ μ œκ³΅ν•˜λŠ” 영수증 뢄석 apiλ₯Ό μ‚¬μš©ν•˜μ—¬ μ˜μˆ˜μ¦μ— λŒ€ν•œ 정보λ₯Ό 뽑아내보렀고 ν•œλ‹€. μ•„λž˜μ— λ‚˜μ™€μžˆλŠ” NAVER CLOUD PLATFORM νŽ˜μ΄μ§€μ— μ ‘μ†ν•˜λ©΄ ν•΄λ‹Ή κΈ°λŠ₯에 λŒ€ν•΄ μžμ„Έν•˜κ²Œ μ‚΄νŽ΄λ³Ό 수 μžˆλ‹€.κ·Έ μ€‘μ—μ„œ μ˜μˆ˜μ¦μ„ μ‚¬μš©ν•˜λ €κ³  ν•˜λ©΄ μ–΄λ–€ μ’…λ₯˜λ₯Ό μ‹ μ²­ν•΄μ•Ό ν•˜λŠ”μ§€λ₯Ό ν¬μŠ€νŒ…ν•΄λ³΄λ €κ³  ν•œλ‹€. https://www.ncloud.com/product/aiService/ocr#overview NAVER CLOUD PLATFORMcloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certificationwww.ncloud.com 1. Clova OCRμ΄λž€?CLOVA OCR(..
egovframework:com:v3.10:sec:login_session_management [eGovFrame] egovframework:com:v3.10:sec:login_session_management [eGovFrame]λ‘œκ·ΈμΈν›„ λ§Œλ£Œμ‹œκ°„κΉŒμ§€μ˜ 남은 μ‹œκ°„μ„ ν‘œμ‹œν•œλ‹€. μ„Έμ…˜μ— 객체 정보 μ €μž₯, 취득, 제거의 κΈ°λŠ₯을 κ°–μœΌλ©° HttpServletRequest 객체의 HttpSession 정보λ₯Ό μ‚¬μš©ν•˜μ—¬ μ²˜λ¦¬λœλ‹€. μœ ν˜•λŒ€μƒμ†ŒμŠ€μ„€λͺ…λΉ„κ³  Filteregovfwww.egovframe.go.kr web.xml μ„€μ •μ„œλ²„μ˜ μ„Έμ…˜νƒ€μž„μ•„μ›ƒ μ‹œκ°„μ„ μ„€μ •ν•œλ‹€. λΆ„ λ‹¨μœ„λŠ” κΈ°μž¬ν•œλ‹€. ex) 60 = 1μ‹œκ°„ , 600 = 10μ‹œκ°„ 60 κ°„λ‹¨νžˆ web.xml νŒŒμΌμ—μ„œ μ„€μ •ν•  수 μžˆλ‹€. + S..
μ„œλ‘  둜그인 접속 기둝 κΈ°λŠ₯을 κ°œλ°œν•˜λ˜ μ€‘μ΄μ—ˆκ³ , λ‘œκ·Έμ•„μ›ƒ μ‹œκ°„λ„ 같이 기둝을 ν•΄μ•Ό ν–ˆλ‹€. μ‚¬μš©μžκ°€ λ‘œκ·Έμ•„μ›ƒ λ²„νŠΌμ„ ν΄λ¦­ν–ˆμ„ λ•Œμ˜ λ‘œκ·Έμ•„μ›ƒ μ‹œκ°„ 기둝은 μ‰½κ²Œ μ²˜λ¦¬ν•  수 μžˆμ—ˆλ‹€. ν•˜μ§€λ§Œ μ„Έμ…˜ 만료 μ‹œ μžλ™ λ‘œκ·Έμ•„μ›ƒ μ‹œκ°„μ„ κΈ°λ‘ν•˜κ³  λΈŒλΌμš°μ €λ₯Ό λ‹«μ•˜μ„ λ•Œμ—λ„ μžλ™ λ‘œκ·Έμ•„μ›ƒ μ‹œκ°„μ„ κΈ°λ‘ν•˜λŠ” 뢀뢄은 κ΅¬ν˜„ν•˜λŠ” 데 어렀움이 μžˆμ—ˆλ‹€. κΈ°μ‘΄ μž‘μ„±λœ μ½”λ“œμ—μ„œλŠ” ν”„λ‘ νŠΈμ—μ„œ μ„Έμ…˜ μ‹œκ°„μ΄ 만료되면 /logout 컨트둀러 보내 λ‘œκ·Έμ•„μ›ƒ 처리λ₯Ό μ§„ν–‰ν•˜κ³  μžˆλ‹€.κ·Έλž˜μ„œ 이 /logout μ»¨νŠΈλ‘€λŸ¬μ—μ„œ λ‘œκ·ΈμΈν–ˆλ˜ μ„Έμ…˜ 정보λ₯Ό 가져와 λ‘œκ·Έμ•„μ›ƒ μ‹œκ°„μ„ κΈ°λ‘ν•˜κ³ , μ„Έμ…˜μ„ μ‚­μ œν•˜λ©΄ λ˜κ² λ‹€κ³  생각을 ν–ˆλ‹€. 문제 : getSession()이 null이라고? ν•˜.μ§€.만.. λ¬Έμ œλŠ” μ„Έμ…˜ μ‹œκ°„μ΄ μ’…λ£Œλ˜λ©΄ μ„Έμ…˜ 정보가 μžλ™μœΌλ‘œ μ‚­μ œλ˜κΈ° λ•Œλ¬Έμ— /..
문제  " /> νšŒμ›κ°€μž… μ·¨μ†Œ λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ 둜그인 νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•˜λ„λ‘ κ΅¬ν˜„ν–ˆμ§€λ§Œ, 404였λ₯˜κ°€ λ°œμƒν–ˆλ‹€ window.location = '/auth/login.do' 둜, μ ˆλŒ€ 경둜λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμ—ˆλ‹€. μ‹€μ œ μ›ν•˜λŠ” κ²½λ‘œλŠ” 'http://location:8080/MyApp/auth/login.do' μ˜€μ§€λ§Œ, 'http://localhost:8080/auth/login.do'둜 잘λͺ» 맀핑이 되고 μžˆμ—ˆλ‹€.   ν•΄κ²° 방법 : μ‚¬μš©ν•˜κΈ°JSP의 νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜λ©΄ μžλ™μœΌλ‘œ μ»¨ν…μŠ€νŠΈ 경둜(Context Path)λ₯Ό ν¬ν•¨ν•˜μ—¬ μ˜¬λ°”λ₯Έ 경둜둜 이동할 수 μžˆλ‹€.  '" value="" /> μœ„ μ½”λ“œλŠ” 싀행될 λ•Œ window.location = '/MyApp/auth/login.do'둜 λ³€ν™˜..
문제 ν…ŒμŠ€νŠΈ 쀑 μ‚¬μ΄μ¦ˆκ°€ 0인 νŒŒμΌμ„ μ €μž₯해보렀고 ν–ˆλŠ”λ° μ €μž₯이 μ œλŒ€λ‘œ λ˜μ§€ μ•Šμ•˜λ‹€ private Content createContent(MultipartFile file, String description) throws Exception { if (file != null && !file.isEmpty()) { // μ €μž₯ } return null;} μ΄λŸ° μ‹μœΌλ‘œ file이 null이 아닐 λ•Œ + λΉ„μ–΄μžˆμ§€ μ•Šλ‹€λ©΄~ 을 κΈ°μ€€μœΌλ‘œ νŒŒμΌμ„ μ €μž₯ν–ˆμ—ˆλ‹€. 파일 μ‚¬μ΄μ¦ˆκ°€ 0이면 isEmpty와 λ™μΌν•˜κ²Œ νŒλ‹¨λ˜μ–΄ λΉ„μ–΄ μžˆλŠ” κ²ƒμœΌλ‘œ μ²˜λ¦¬λ˜μ—ˆκ³ , κ·Έ κ²°κ³Ό μ €μž₯이 λ˜μ§€ μ•Šμ•˜λ‹€.      ν•΄κ²°private Content createContent(MultipartFile file, String description) thro..
ν•΄λ²„λ‹ˆ
'π™±πšŠπšŒπš”πšŽπš—πš' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘