제목 | csrf ajax사용시 403 (forbidden) error | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 테스티드 | 작성시각 | 2017/08/06 18:18:24 |
|
|||
안녕하세요. codeigniter3로 웹 개발을 하고있는 사람입니다. 보안을 위하여 config.php에서 $config['csrf_protection'] = TRUE; 로 하였습니다. 그리고 모든 form을 form_open 으로 변경 하던 중, 심각한 오류를 확인하였습니다. 바로 ajax가 작동하지 않는 오류였습니다. 웹 요소검사에서 [Error] Failed to load resource: the server responded with a status of 403 (Forbidden) 오류가 ajax가 한번 작동 될 때마다 뜹니다. 제 ajax 구조입니다. $(document).ready(function() { updateAlram(); }); function updateAlram() { $.ajax({ url : "<?php echo base_url(); ?>alram", type : "post", cache : false, success : function(data) { $('#tab1').html(data); } }); setTimeout("updateAlram()", 6000); } 검색을 하여 data로 token값을 전달 해 주어야 한다는 것을 알았는데, 어떻게 전달해야 할지 도저히 이해가 안갑니다. var post_data = { 'id' : id, '<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>' }; 이렇게 하고 ajax에 data: post_data로 넘기라는데 id에 무슨 값이 들어가야 될 지를 모르겠습니다. 이 방법이 맞는지 확신도 들지 않구요. 추가- 이 방법으로 하여 ajax 동작에 성공하였습니다. 하지만 $config['cookie_domain'] = '.localhost:8080'; 로 하면 ajax가 동작하고, 다른 form이 The action you have requested is not allowed. 오류가 나고, $config['cookie_domain'] = '.localhost' ; 로 하면 ajax가 동작하지 않고, 다른 form 이 정상 동작합니다. 이유가 뭘까요... 골치아픕니다, 선배님들의 조언을 구합니다. 읽어주셔서 감사합니다. |
|||
태그 | csrf,ajax | ||
다음글 | ci 2.x대에서는 쿼리문을 생성한후에 실행하지않고 쿼... (3) | ||
이전글 | 염치없지만 페이징 관련하여 또 질문드립니다.. (14) | ||
변종원(웅파)
/
2017/08/09 20:32:48 /
추천
1
참고하세요 http://cikorea.net/bbs/view/qna?idx=10582
|