반응형

ahnnyung ,/Spring Rest API 4

[Spring Rest API] @CrossOrigin을 줬는데도 CORS 에러가 발생할 때 (CORS preflight 오류)

Spring Security를 사용하여 로그인/인증을 구현했다. 로그인을 통해 JWT토큰을 발급해주고 Frontend에서 발급받은 JWT토큰을 헤더에 포함하여 Request를 보내야 JwtAuthenticationFilter를 통해 JWT토큰이 확인되어야 기존 API를 사용할 수 있도록 구현하였다. 구현을 완료한 뒤 포스트맨을 통해 테스트해봤을 때는 문제없이 잘 동작했다. 하여 서버로 배포한 뒤 얼마 지나지 않아 Front작업하는 팀원으로부터 CORS에러가 난다는 얘기를 들었다. 분명 이전포스팅때의 경험을 살려 다음과 같이 @CrossOrigin어노테이션에 받는 입장의 allowedHeaders로 해당 JWT토큰값을 가지고있는 "X-AUTH-TOKEN"헤더를 추가해줬음에도 에러가 발생하였다. 혹시 몰라서..

[Spring Rest API] REST API 설계 규칙 - 2

[부록] Google Rest Api에서 쓰는 Error Code STANDARD SUECCSS 200 (“OK”) 일반적인 요청 성공을 나타내는 데 사용해야 한다. 200은 클라이언트가 요청한 어떤 액션이었뜬지 REST API가 성공적으로 수행했음을 나타내는 코드로, 클라이언트는 이 코드를 받길 원한다. 또한 더 이상의 할당된 ‘2xx’ 계열의 응답코드가 없다는 뜻이기도 하다. 204 상태 코드와는 달리 200코드는 응답 바디가 포함된다. 201(‘Created’) 성공적으로 리소스를 생성했을 때 사용한다. 새로운 리소스를 이용하여 컬렉션에 생성했거나 스토어에 추가했을 때 201 상태 코드로 응답한다. 컨트롤러의 행동으로 새로운 리소스가 생겨났을 경우에도 201 상태 코드로 응답한다. POST 시 거의..

[Spring Rest API] REST API 설계 규칙 - 1

규칙 Rule1: 도큐먼트 이름으로는 단수 명사를 사용하여야 한다 Rule2: 컬렉션 이름으로는 복수 명사를 사용하여야 한다. Rule3: 스토어 이름으로는 복수 명사를 사용하여야 한다. Rule4: 컨트롤러 이름으로는 동사나 동사구를 사용해야 한다. Rule5: 경로 부분 중 변하는 부분은 유일한 값으로 대체한다. Rule6: CRUD 기능을 나타내는 것은 URI에 사용하지 않는다. Rule7: URI 쿼리 부분으로 컬렉션이나 스토어를 필터링할 수 있다. Rule8: URI 쿼리는 컬렉션이나 스토어의 결과를 페이지로 구분하여 나타내는 데 사용해야 한다. 메소드 규칙 CRUD 기능을 나타내는 것은 URI에 사용하지 않는다 PUT 메서드는 리소스를 삽입하거나 저장된 리소스를 갱신하는 데 사용해야 한다. P..

[Spring Rest API] axios로 파일 다운로드 시 Content-Disposition 헤더 사용기 (헤더 추가해서 보냈는데 받는 쪽에서 제대로 안받아 질 때)

위는 작성한 Controller 코드 중 일부분이다. Content-Disposition 헤더를 추가하여 파일명을 붙여보내는 메소드이고, postman으로 테스트해볼때는 문제가 없었다. 그런데, 프론트 작업을 하는 친구로부터 제대로 전달되지 않는다고 얘기를 들었다. 해당 header값이 없다고한다. 뭐지?? 분명 postman으로 올바르게 동작하는 걸 확인했는데... 곧장 프론트 작업하는 친구에게 달려가 같이 확인해보았다. 함께 브라우저(chrome)로 확인해본 결과 올바르게 전달이 되는 것을 확인할 수 있음에도 프론트 코드에서 해당 header를 찾을 수 없다는 오류가 지속적으로 발생했다. 여기서 1차 멘붕. 관련한 여러 키워드로 검색해보니 CORS 문제라고 하는데... 나는 분명 처리를 해줬다고 생각..