두치넙치
284
2020-05-18 11:56:24
10
181

ReqeusetMapping POST 오류


안녕하세요. 개발 초보자입니다.

선배님들께 질문할게 있어 글을 남깁니다. 

Rest API 개발을 진행하던 도중 오류에 봉착하였고 오류를 해결하고자 노력했지만, 어느 부분이 오류인지 발견하지 못하여 선배님들의 고견 듣고자 글 남깁니다.

Reqeuset Method를 POST로 할 시에 아래 사진과 같은 오류가 발생하는데, GET으로 진행하면 같은 로직인데도 정상적으로 잘 작동합니다. 이유를 잘 모르겠습니다. 혹시 제가 Spring Security를 사용하는데 이 부분이 문제가 될 여지가 있을까요? 

아무쪼록 답글 기다리겠습니다. 감사합니다.





0
0
  • 답변 10

  • 으어어어어
    690
    2020-05-18 12:56:16

    CSRF 토큰 포함 안시킨거 아닌가요?

    0
  • 빵상
    2k
    2020-05-18 12:56:36

    404 에러인거죠?

    요청하신 주소가 없는경우 발생합니다

    localhost 로 했는데 안된다고 생각되시면 포트도 한번 확인해부세요

    0
  • 두치넙치
    284
    2020-05-18 13:10:39

    @으어어어


    CSRF 토큰이 혹시 어떤건지 여쭤봐도 될까요?

    0
  • 두치넙치
    284
    2020-05-18 13:11:08

    @빵상


    답변 감사합니다.

    port면 localhost 말고 포트번호로 접속하라는 말씀이신가요?

    0
  • 빵상
    2k
    2020-05-18 13:21:24

    앗 제가 난독이었네요 

    0
  • shaffron
    3k
    2020-05-18 13:23:43 작성 2020-05-18 14:33:47 수정됨

    두치넙치 // 포트번호는 개발용 서버를 구동할 때 뒤에 붙여주는 번호를 뜻합니다.

    API 요청하실 때 8888 포트로 접속하고 있는데 실제 서버가 8888 포트로 데이터를 송신받게끔 설정되어있는지

    확인해보라는 말씀입니다.


    다만 포트번호는 정상으로 보이는게 포트번호가 틀리면 애초에 404 가 뜨지 않습니다. 

    502 bad gateway 같은 오류가 발생하죠.

    0
  • 두치넙치
    284
    2020-05-18 13:38:55

    @shaffron


    답변 감사합니다.

    말씀하신대로 path경로에 api를 붙여도 결과는 동일하네요ㅠㅠ

    0
  • shaffron
    3k
    2020-05-18 14:33:08

    /api 는 제가 잘못알고 있었네요.

    이 부분은 잊어주세요~ ㅎㅎ


    import org.springframework.web.bind.annotation.RestController;


    @RestController

    @RequestMapping(value=~~~)


    위 코드처럼 RestController 어노테이션 붙여보시겠어요?

    0
  • 두치넙치
    284
    2020-05-18 15:12:48

    @shaffron 


    말씀하신대로 ReqeusetMapping해서 경로지정해서 같이 해봤는데 역시나 안되네요.. 왜 자꾸 404 뜨면서 Response Body is empty라고 나오는지...ㅠㅠㅠ  제 실력과 구글링을 통해 할 수 있는 방법 다 해봤는데 자 꾸 안되네요ㅜㅠㅜ

    0
  • 으어어어어
    690
    2020-05-18 18:43:41 작성 2020-05-18 18:46:11 수정됨

    두치넙치


    CSRF는 사이트 간 요청 위조 라고 해서 웹 취약점중 하나 인데요. API를 요청할때 특정 폼을 복사하여 메일이나 파싱 사이트에 심어두고 이용자가 모르고 접근했을시 이용자의 정보로 API를 요청하여서 요청을 위조 하는 방법입니다. 이 취약점을 막는 방법중 하나가 최초로 서버에 접근했을시 CSRF 토큰을 할당하여 앞으로 모든 요청에 해당 CSRF 토큰을 포함시키도록 하는거죠. 서버는 요청을 받았을때 CSRF 토큰이 일치하는지 확인하여 정상적인 요청인지 판단하는거고요.

    스프링 시큐리티를 적용하면 기본적으로 CSRF 토큰을 사용하도록 설정이 되어 있는데 기억이 잘 안나지만 이 CSRF 토큰을 포함시키지 않고 요청을 보내면 404 였나 405 에러가 발생할거에요. 그래서 한번 확인해보셨으면 해서 답글을 달았었습니다.


    CSRF 토큰 사용을 원하시지 않으면 http.csrf().disabled() 하시면 됩니다.


    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.