내 서버의 프로덕션 모드에서만 발생하는 누락 된 CSRF_Token 오류가 발생합니다. 그러나 runserver 명령을 사용하여 내 컴퓨터 터미널에서 실행할 때 모든 것이 잘 작동합니다. 나는 이것에 관련된 많은 다른 질문을 행운으로 읽었습니다. 내 사건은 다른 것들과 약간 다르다. 왜냐하면 그것은 지역적으로 일하지만 생산에는 그렇지 않기 때문이다.Django CSRF 토큰이 프로덕션에만 누락되었습니다.
views.py의 "제출"에 제출하는 Ajax 양식을 제출할 때 오류가 발생합니다. 아무도이 원인을 알 수 있습니까? 또한 프로덕션 모드에서 쿠키를 볼 때 CSRF_Token은 처음부터 존재하지 않습니다. 국지적으로 그렇습니다. 어떤 도움을 주셔서 감사합니다.
다음은 아약스에 관한
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return render(request, 'index.html')
def submit(request):
#Receive Request
inputone = request.POST['randominfo']
inputtwo = request.POST['randominfo2']
#Some more code here that setups response.
#Deleted since Im posting to StackOverflow
return response
코드는이 문제를 해결
$(function() {
$.ajaxSetup({
headers: { "X-CSRFToken": getCookie("csrftoken") }
});
});
function getCookie(c_name)
{
if (document.cookie.length > 0)
{
c_start = document.cookie.indexOf(c_name + "=");
if (c_start != -1)
{
c_start = c_start + c_name.length + 1;
c_end = document.cookie.indexOf(";", c_start);
if (c_end == -1) c_end = document.cookie.length;
return unescape(document.cookie.substring(c_start,c_end));
}
}
return "";
}
function submitAjax(event){
$.ajax({
type:'POST',
url:'/submit/',
data:{
randominfo:document.getElementById('Random').innerHTML,
randominfo2:document.getElementById('Random2').innerHTML,
},
dateType: 'json',
success:function() {
# Url here
}
})
};
솔루션을 제출 내 views.py입니다. 이 때문에 아약스 양식을
이유는 단지 {%의 csrf_token의 %}'두지'템플릿으로 대신 직접 쿠키에서 그것을 얻으려고? –
그게 내가 시도하지 않은 한가지. 아픈 보고서. 감사 –