일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- driver
- AWS
- 우분투
- golang
- Chef
- sudo
- port
- 도커
- window size
- QT
- 루비
- VPN
- docker container
- 패키지
- RUBY
- VMware
- Linux
- docker
- opsworks
- 드라이버
- ssh command
- Openswan
- ubuntu
- DevOps
- docker registry
- docker-compose
- ssh
- 리눅스
- VIM
- 방화벽체크
- Today
- Total
구리의 창고
Rails3 - ajax 요청으로 session을 사용 할 수 없는 경우 본문
Rails 3에서는 자체에서 CSRF protection을 해준다고한다.
아파치 로그를 살펴보면 WARNING: Can't verify CSRF token authenticity 와 같이 떠있다.
그래서 session이 제대로 저장되지 않은 것처럼 보이는데 두 가지 해결 방법이 있다.
CSRF protection을 꺼버리던가(나는 그냥 이게 편하던데) ajax 요청시 헤더에 csrf token 값을 넣어서 보내주는 것이다.
보통 rails가 만들어주는 기본 레이아웃에 <%= csrf_meta_tag %> 라는게 존재하는데
<meta content="IjtRujezbmbM+aTMl2xUDmPOnDOTYSHZRwE+0TE8pvs=" name="csrf-token" />
이와 같이 자동으로 token을 만들어준다.
common.js와 같이 공통으로 사용하는 자바스크립트에서 ajaxSend를 아래와 같이 바인딩해주던지,
$.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
}
});
ajax 요청시 header에다가 X-CSRF-Token에 위 meta content 값을 같이 넘겨주면된다.
다른 방법으로 제시했던 CSRF protection을 끄는 법은
app/controller/application_controller.rb 에서 protect_from_forgery를 주석처리해주면된다.
'Ruby' 카테고리의 다른 글
CentOS 6.4에 Ruby 1.9이상 설치하기 (0) | 2013.10.18 |
---|---|
DataMapper - belongs_to 와 has 1 사용하기 (0) | 2012.06.21 |
Reque - Ruby에서 큐 사용하기 (0) | 2012.06.18 |
Rails3 - Unit Test에 색깔 입히는 법 (0) | 2012.06.13 |
Rails3 - no such file to load (0) | 2012.06.08 |
Comments