CI 묻고 답하기

제목 csrf ajax사용시 403 (forbidden) error
카테고리 CI 2, 3
글쓴이 테스티드 작성시각 2017/08/06 18:18:24
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 19398   RSS

안녕하세요. 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