私のサーバー上のプロダクションモードでのみ発生するCSRF_Tokenエラーが表示されなくなりました。しかし、runserverコマンドを使用してコンピュータの端末から実行しているときは、すべてがうまく動作します。私はこれに関連する他の多くの質問を、運がないと読んだ。私の場合は、他のものとは多少異なると思われます。なぜなら、ローカルではあるが生産ではないからです。Django CSRFトークンがプロダクションのみに存在しません
views.pyの「送信」に送信するAjaxフォームを送信するとエラーが発生します。誰がこれを引き起こしているのか知っていますか?また、プロダクションモードで私のクッキーを見ると、CSRF_Tokenはそこにも始まっていません。ローカルです。助けてくれてありがとう。ここで
のAjaxに関する用語の私のviews.py
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で「django.views.decorators.csrf輸入ensure_csrf_cookieから」追加して、あなたがしているので、Ajaxフォーム
理由だけではなく、あなたのテンプレートに '' {%csrf_token%}を置く代わりに、直接のクッキーからそれを取得しようとしていませんか? –
私が試したことのないことがあります。悪い報告をする。ありがとう –