Ajax에서 동적으로 바뀌는 셀렉트 박스를 만들었지만 움직이지 않기 때문에 메모 (전은 움직였는데)

2194 단어 아약스Rails

1. 전제



셀렉트 박스에서 도도부 현을 선택하면 다음 셀렉트 박스에서 시정촌과 같은 더 자세한 영역을 선택할 수 있습니다.



2. 현상



도도부현을 선택해도 다음의 셀렉트 박스가 움직이지 않는다.
(개발 환경(AWS Cloud9)에서만. Heroku에서 배포한 것은 움직입니다.)

3. 원인 조사




【디버그 해설 동영상】Rails 앱으로 Ajax가 잘 움직이지 않을 때 확인하는 포인트

Ajax가 움직이는 흐름
1. 브라우저에서 선택 상자 변경
2. jQuery에서 JS로 replaceChildrenOption
3. JS에서 Rails로 요청
4. Rails 내에서 데이터 취득
5. JS에 응답
6. 브라우저의 하위 카테고리 재작성

순서 1
  • Chrome 개발자 도구 소스에서 중단점 추가
  • 정지 → 1 ~ 2 당은 움직이고있다
  • 멈추지 않음 → 이벤트가 올바르게 설정되지 않았습니다 → 거기에 중단 점을 추가하십시오.


  •  ↑문제 없음

    순서 2
  • Network의 XHR: JS측에서 요청을 던진 것을 알 수 있다. 반환 된 데이터를 보면 3-4가 가능하다는 것을 알 수 있습니다.

     ↑ 돌아오지 않는다. Why?

    4.Rails의 로그를 살펴보기


    Can't verify CSRF token authenticity.
    Completed 422 Unprocessable Entity in 1ms (ActiveRecord: 0.0ms)
    

    「422는 숫자, 개발자 툴의 에러로 본 적 있는데…

    알아보기

    Ruby on Rails 서버에 POST를 보낼 수 없습니다! ? (Can't verify CSRF token authenticity)
    h tp // 여유롭게? 하테나 bぉg. 코m/엔트리/2014/09/03/104824

    CSRF란 무엇입니까? Cross-Site Request Forgeries의 약자로 POST하는 곳으로 유도하는 공격인 것 같습니다. 이것을 막기 위해서 구현되었다든가.

    해결 방법
    ApplicationController의 protect_from_forgery, :exception의 개소를 null_session으로 한다.

    여기에서 소개된 대로 exception을, null_session으로 한 곳 제대로 움직여 주었다.

    일단 여기까지.
    외부에서 POST할 수 없습니까? Rails의 CSRF 대책을 정리해 보았습니다. ↑ 이런 것을 보면 좋을까?

    다시 알아보자.
  • 좋은 웹페이지 즐겨찾기