CI 묻고 답하기

제목 ci4 ajax 질문합니다..!(403 forbidden)
카테고리 CI 4 관련
글쓴이 하나근 작성시각 2022/08/10 14:31:56
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 6294   RSS

※ 위와 같이 설정하면 개발자도구에서 [403 Forbidden]오류가 뜹니다.

※ 위는 ALERT창 내용 입니다.

★맨 처음 한 번만 정상적으로 ajax가 작동하고 그 다음에 다시 오류가 뜹니다.

여기저기서 검색해보니 token을 재생성(?)해줘야 한다고 하는데 어디서 어떻게 해줘야할까요,,,,

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

뭐가 문제일까요 전혀 감을 못 잡겠습니다.ㅠㅠ ci4로 ajax를 처음 사용합니다.

1. view파일에는 

<form method="post">      

                     <?= csrf_meta() ?>

                     <input type="hidden" id="id_token"  name="<?= csrf_token() ?>" value="<?= csrf_hash() ?>" />

                         <div class="form-group">

                          <label for="country">Countries</label>

                          <select class="form-control" name="country_id" id="country_id">

                            <option value="">Select Country</option>

                            <?php foreach($countries as $c){?>

                              <option value="<?php echo $c->id;?>"><?php echo $c->name;?></option>"

                            <?php }?>                              

                          </select>

                        </div>

추가되어 있습니다.

 

2. .env파일 수정하였습니다.

security.csrfProtection = 'cookie'

security.tokenRandomize = true

security.tokenName = 'csrf_token'

security.headerName = 'X-CSRF-TOKEN'

security.cookieName = 'csrf_cookie_name'

security.expires = 7200

security.regenerate = true

security.redirect = false

security.samesite = 'Lax'

 

 

#ci4 매뉴얼을 봐도 ajax사용법을 잘 모르겠습니다. 혹시 좋은 예제가 있으면 알려주시면 감사하겠습니다.

 다음글 하이브리드앱 속도 관련 이슈 (3)
 이전글 ci4에서 최근 일어났던 데이터베이스 오류에 대한 로그... (3)

댓글

하나근 / 2022/08/10 17:02:15 / 추천 0

추가로 Security::generateHash() 메소드를 사용하여 수동으로 CSRF 토큰을 재생성할 수 있습니다.

라고 매뉴얼에 나와있는데 위의 generateHash()는 어떻게 사용하는건가요?

하나근 / 2022/08/10 17:14:20 / 추천 0
하나근 / 2022/08/10 17:21:14 / 추천 0
  • Security::generateHash()는 공개로 전환되었으며 Config\Security::$regenerate가 false인 경우 CSRF 토큰을 수동으로 재생성할 때 사용할 수 있습니다.

매뉴얼에서 'generateHash'검색 후 위의 내용 확인했으며, 현재 제 세팅된 환경에서 위의 내용 false로 바꿔주니 (.env파일) 토큰 재생성됨을 확인하였습니다.

테러보이 / 2022/08/11 10:30:57 / 추천 0

방법1.

security.regenerate

를 false로 하여 토큰이 바뀌지 않도록 한다. 

- 전 이방법을 사용중입니다. post로 여러개 전송 하는경우가 많아서

 

방법2

post 전송이 되었다면 토큰을 다시 생성해준다.