2013-08-03 2 views
0

간단한 django 응용 프로그램을 만들고있어 응답을 게시 할 수 있도록 내 csrftoken이 제대로 설정되었는지 확인해야했습니다.쿠키가 원격으로 설정되지 않지만 로컬에서 양호하게 작동합니다.

로컬로 테스트하고 자바 스크립트 디버깅을 살펴보면 모든 것이 세계와 맞고 csrf가 제대로 첨부되어 있습니다. 그러나 Heroku에서 실행되는 정확한 중단 점을 볼 때 전체 getCookie 함수는 공백을 반환합니다. 참고로, 나는 Django Docs에서 표준의 getCookie 함수를 사용하고 있습니다 :이 경우,

// using jQuery 
function getCookie(name) { 
    var cookieValue = null; 
    if (document.cookie && document.cookie != '') { 
     var cookies = document.cookie.split(';'); 
     for (var i = 0; i < cookies.length; i++) { 
      var cookie = jQuery.trim(cookies[i]); 
      // Does this cookie string begin with the name we want? 
      if (cookie.substring(0, name.length + 1) == (name + '=')) { 
       cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 
       break; 
      } 
     } 
    } 
    return cookieValue; 
} 
var csrftoken = getCookie('csrftoken'); 

다른 jQuery를하고 자바 스크립트 페이지에서 제대로 작동하지만, document.cookie를 완전히 비어 있습니다.

여러 도메인 (herokuapp.com, domain_name 등)에서 시도했지만 모두 같습니다. 왜 document.cookie가 emtpy일까요? 거기에 있어야하지 않아야합니까?

+0

heroku에서 HTTPS를 실행하고 있습니까? –

+0

http :를 통해 사이트에 액세스하고 있습니다. https를 강제하는 기본 설정이 있습니까? – aronchick

답변

0

분명히, (알 수없는 이유로) 장고는 X 헤더를 제출 좋아하지 않았다, 그래서 나는 고장 넣어 : 내 템플릿 상단에서

{% csrf_token %} 

합니다. 추가 :

'csrfmiddlewaretoken': $('csrfmiddlewaretoken').val()}; 

패스 백 데이터에. 못 생겼지 만 효과가 있었다.

관련 문제