본문 바로가기
목차
JQuery

$ajax 공부 (url 주소 보낼땐 시큐리티 조심!//$ajax 통신법은 숙지!)

by 지각생 2022. 2. 14.
728x90

파싱에러난다.

.js파일에서 보내는 데이터명과 달라도 파라미터 인자가 1개 일때는 json형태로 보내준다.

그럼 2개 일때는?

에러가 뜬다.

.js파일에

let data = {
    query1: $("#query").val(),
    query2: $("#query").val(),
  };

작성해줘도 

@RequestBody String query1,
@RequestBody String query2

로는 받을 수 없는 것 같다.

 

 dataType: "text",

으로 해줘도 마찬가지이다.

 

 

function btn_headerSearch() {
  (query = $("#query").val()), console.log(query);
  $.ajax({
    type: "POST",
    url: "/header/search",
    data: JSON.stringify(query),
    contentType: "application/json; charset=utf-8",
    dataType: "text",
  })
    .done(function (resp) {
      alert("글쓰기가 완료되었습니다.");
    })
    .fail(function (error) {
      alert(JSON.stringify(error));
    });
}

이렇게 text타입으로 지정하고

@RequestBody String query

query라는 변수명칭을 알맞게 해주면 제대로 작동하는걸 볼 수 있다.

 

마지막으로 url주소가 /header/search인데

시큐리티에서 /header를 막으면 어떻게 될까

.js의 data가 시큐리티에 막혀 @PostMapping("/header/search") 로 가지 못하고

"/" 주소로 튕겨져 버린다.

당연한거지만 잊었다가 한참을 "맞.왜.틀." 시전했다..

 

요약

1. Json 타입 쓸거면 Dto타입으로 받자 알아서 잘 매칭해준다.

2. 보낼 주소를 시큐리티가 막고 있진 않는지 잘 체크하자.

728x90

댓글