전체 글 135

preflight시에 get만 cors에러나는 이유(post와의 차이 - origin null)

preflight -> xhr 로컬 브라우저에서 api서버로 리소스를 요청할때 아래와 같이 XHR (XML Http Request) 요청을 보내기 전에, preflight를 통해, 서버의 허용여부를 체크하게 된다. preflight시 get요청은 CORS에러 발생 서버와 도메인이 다르다면, CORS에러가 날 것이고 서버에서 CORS를 허용해준다면 요청이 정상적으로 처리 되어야 한다. 그런데, 서버에서 CORS에 대한 전체 허용을 해줘도 GET요청은 아래와 같이 에러가 발생한다. POST는 정상이다. orgin null이 문제 이유가 무엇일까? 일단 서버 프로그램을 하나씩 뜯어봐야 하지만, 결론을 말하자면 request헤더에 담겨 있는 origin이 null이라는 것이 문제이다. Spring 서버 프로그램..

spring 예외처리 정리(exception기본, 중첩된 예외, 멀티서버간 예외처리)

클라이언트에서 api서버에 데이터를 요청했을때 예외가 발생하면, 서버에서는 적절한 예외처리와 이와 관련된 http response를 클라이언트에 내려줘야 한다. 그래야지, 사용자가 어떤 요청을 잘못했는지에 대해 알수 있을것이고, 팝업을 띄우거나 관련된 에러화면을 보여줄 수 있을것이다. 그래서 오늘은 3가지 정도의 category로 예외처리에 대해 정리해보고자 한다. 먼저, 기본적인 예외처리, ControllerAdvice의 사용, ResponseEntity, JSON형태의 예외메시지 등 기본적인 1대의 API서버에서 발생할 수 있는 여러 상황에 대해서 알아보고자 한다. 두번째로는 예외 message중에 예외에 예외가 감싸져 wrapping되어 넘어오는 경우 또한 종종 있다. 예외에 예외가 wrapping..

오늘 영어 표현 - Things are a bit hectic, you only have to ask 등

(매일 새로운 영어 표현과 구문을 올립니다. 주로 economist 뉴스, 미드, 각종 영어자료 등을 참고해서 고릅니다.) -I'd like to look at a second-hand car here. 여기서 중고차좀 보고 싶습니다. *second-hand car : 중고차 -Of course, you only have to ask. 물론입니다. 말만하세요. -Hello, what extention are you trying to call? 안녕하세요, 어떤 내선번호로 전화하셨어요? -Things are a bit hectic in our department. 우리 부서가 정신없이 바쁘네요. -Now I can use that machine the way it was meant to. 이제서야 그 기계..

오늘 영어 표현 - On the face of it, are over-hyped 등

(매일 새로운 영어 표현과 구문을 올립니다. 주로 economist 뉴스, 미드, 각종 영어자료 등을 참고해서 고릅니다.) -On the face of it, the answer is obvious. 겉으로 보기에 대답은 명백하다. -Chicago’s woes are over-hyped 시카고의 불황은 과장되었다. -India’s government was scheduled to pose its citizens a list of basic questions which are called census. 인도 정부는 시민들에게 인구조사라 불리는 몇몇 기본 질문들을 실시할 예정이었다. *pose : 제시하다 *is scheduled to : ~할 예정이다 *census : 인구조사 -The West sends..

Spring JWT 토큰 서버 구현(+ ajax 프론트테스트)

회원가입/로그인, 회원정보를 조회 기능을 가진 Spring서버에서 jwt token을 통해 인증처리를 하도록 서버구현을 하고자 한다. 구현 후 테스트는 html에서 ajax를 통해 로그인 및 토큰을 발급받고자 한다. 토큰을 획득한뒤에 회원정보조회 api호출도 잘 되는지를 확인해보겠다. 참고로 본인은 백엔드 개발자이다보니, html과 ajax로 간단히 만들었다. 현업에서는 주로 react, vue.js 등 프론트엔드 프레임워크를 통해 구성할테니 양해 바란다. *사용기술 :타임리프, mysql, jpa, springboot 2.7.x, jwt, 타임리프 *github : https://github.com/kimseonguk197/spring_jwt_server 토큰과 세션이란 토큰과 세션은 인증을 위한 기술..

티스토리 로그인/로그아웃 관련 오류

티스토리가 어제부터 자꾸 튕긴다. 로그인 세션 또는 access/refresh 토큰 관련해서 문제가 생긴듯하다. 글을 한참 쓰고 있다 보면 어느 순간 로그아웃이 돼서 먹통이 돼 있네... 로그아웃 시간주기가 8,9시간 정도로 확 줄어들어 버린 것 같은데, 글을 쓰는 중에는 로그인 세션이 갱신 되지도 않는 듯하니 답답하다. 아니 이럴 거면, 자동 저장기능이라도 구현을 해주세요. 쓰던거 다 날려먹엇네ㅜ (ps.아 추가적으로 입력글자수 많아지면, 한글입력 오류도 나는것 같은데...)

기타 2023.01.08

오늘 영어 표현 - let down, call off, no way that 등

(매일 새로운 영어 표현과 구문을 올립니다. 주로 economist 뉴스, 미드, 각종 영어자료 등을 참고해서 고릅니다.) 오늘 엄청 기분이 안좋아보여, 무슨 일 있어? you look really upset today, what's wrong? 선택받지 않았다는 사실은 분명 실망스러웠을거야. Not to be chosen must have been a quite let-down. 당신이 이 모든걸 다 계획한줄 몰랐다. I didn't know you had this all planned out. 결혼식을 미뤄야 할 것 같아. I think we're calling off the wedding. 그것에 대해 너무 강조할 필요는 없어 you don't have to be too emphatic about ..

오늘 영어 표현 - comes in handy, help ease tension

(매일 새로운 영어 표현과 구문을 올립니다. 주로 economist 뉴스, 미드, 각종 영어자료 등을 참고해서 고릅니다.) -드레스코드가 무엇인가요? what will the level of dress be? -혼자있는데 문이 잠기면, 그 키가 유용할 거에요. That key will come in handy if you lock yourself out. -요즘 너무 스트레스를 받아. 어떤 것이 내 스트레스 해소에 도움을 줄지 모르겠네. I'm so stressed out lately. I wonder what might help ease my tension. -그녀는 신이 무슨 생각을 하는지 거의 알지 못했습니다. Little did she know what God was thinking. -그 이벤트..

spring 로깅을 통한 post/get request확인

스프링에서 가장 많이 사용되는 로그 관련 라이브러리는 slf4j와 logback이라 볼 수 있다. slf4j는 인터페이스이고, 이를 구현한 구현체 중 가장 많이 사용되는 라이브러리는 logback이다. slf4j는 spring-boot라이브러리 안에 포함되어 있기 때문에, import만 해주고 아래와 같이 선언하여 바로 사용이 가능하다. private final Logger logger = LoggerFactory.getLogger(getClass()); 서버개발자 입장에서 log가 가장 필요한 순간은 어떤 순간일까? 아마도 에러가 발생했을때, client에서 어떤 값으로 어떻게 요청했는지에 대해서 궁금할때 일 것이다. get요청과 post요청시 try catch를 통해 예외처리하고, 예외시에 사용자의 ..

junit repository test - 서비스용DB mysql과 테스트DB h2사용

springboot, jpa, mysql 을 이용하여 간단한 crud기능만들었다고 가정했을때, repository를 대상으로 테스트코드를 짜서 junit테스트를 진행해보고자 한다. 여기서는 테스트코드를 짜는 방식에 대한 설명보다는 DB connection을 위한 설정, application.yml과 같은 설정파일, 어노테이션 설정 등 기본 환경설정을 어떻게 해야 하는지 위주로 설명하도록 하겠다. 웹서비스 과정에서 data가 실제 쌓이는 mysql을 대상으로 테스트코드를 실행하는 방법과 테스트용DB인 H2 DB를 사용하는 두가지 방법으로 나눠서 설명할 예정이다. 서비스용 DB인 mysql을 대상으로 한 TEST방법 먼저, build.gradle에 아래와 같이 spring-boot-starter-test를 ..