일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- golang
- driver
- Openswan
- QT
- Linux
- VIM
- window size
- sudo
- 리눅스
- 루비
- docker
- VMware
- opsworks
- docker-compose
- docker registry
- 우분투
- port
- 드라이버
- VPN
- 패키지
- ssh
- 방화벽체크
- 도커
- ubuntu
- docker container
- Chef
- RUBY
- ssh command
- AWS
- DevOps
- 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