오늘 한 것

  • ajax에서 호출 시 계속 403, 리스트로 받는 checkbox 삭제는 404가 떴다.
    • 이것저것 ajax를 시도해봤으나 계속 403, 404, xhr문제가 떴었다. 근데 결국 검색해 찾아냈다.
    • 구글 검색 결과의 몇몇 문서에서는 http.csrf().disable()와 같이 csrf를 disable 하라고 하지만 이렇게 할 경우 보안에 문제가 발생할 수 있기 때문에 좋지않다.
      그럼 csrf 가 enable 되어 있는 상태에서 403 Forbidden 에러가 발생하지 않게 하려면?
      Ajax 요청 Header에 csrf token 정보를 포함해서 전송하면 된다고 한다.
      HTML의 <head> 내에 csrf meta tag를 추가한다.
      <meta id="_csrf" name="_csrf" th:content="${_csrf.token}"/>
      <!-- default header name is X-CSRF-TOKEN -->
      <meta id="_csrf_header" name="_csrf_header" th:content="${_csrf.headerName}"/>
    
      // -----------
    
          var token = $("meta[name='_csrf']").attr("content");
          var header = $("meta[name='_csrf_header']").attr("content");
          $(function () {
    
              $(document).ajaxSend(function(e, xhr, options) {
                  xhr.setRequestHeader(header, token);
              });
    
  • check 박스는 리스트로 받아서 지우려고 했으나 그보다 js로 웹에서 지우고 controller에서 호출해 지우는 편이 더 깔끔한 것 같아서 html에선 document.remove를 이용하고 controller에선 받아 db에서 지웠다

이 주에 할 것

  • bookmark delete ajax 작성(v)
    • 삭제를 실행하는 user id에 맞는 bookmark id를 대조해 삭제한다.
    • 개별삭제, 선택삭제(전체삭제) 구현
  • bookmark send ajax 작성()
    • isbn을 challenge에 보내 book db에서 검색한뒤 challenge add에 값을 넘겨 실행한다.
  • bookmark add ajax 작성()
    • challenge add에서 bookmark add 버튼을 눌렀을 때 book db에 isbn, 썸네일, title이 저장