私は Django を初めて使用し、Google の検索結果のページやページだけでなく、ここでも同様の質問を投げかけましたが、まだ治療法を見つけていません!
私の Web サイトには、CSRF 検証を使用するログイン フォームがあります。PC/Windows や Android の携帯電話やタブレットでは問題はありませんでしたが、iPhone や Mac コンピューターにログインしようとすると、次のエラーが表示されます。
禁じられた (403)
CSRF 検証に失敗しました。リクエストは中止されました。
詳細については、DEBUG=True を使用して入手できます。
迅速な修正を提供する一般的な問題がいくつかあるようですが、すべての基本事項をカバーしていると思います. 繰り返しになりますが、前に述べたように、私は Django の専門家ではありません。私の設定は次のとおりです。
設定.py
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
ビュー.py
def default(request):
if request.user.is_anonymous():
return HttpResponseRedirect(reverse('auth_login'))
try:
request.user.voter
except Voter.DoesNotExist:
return render_to_response('main/profile.html', {'form': form},
context_instance=RequestContext(request))
return render_to_response('main/ballot.html', {'form': form},
context_instance=RequestContext(request))
login.html
<form action="" method="post" id="authentication_form" class="uniForm">
{% csrf_token %}
{{ form|as_uni_form }}
<div class="buttonHolder">
<input type="submit" value="Log in" class="primaryAction" />
</div>
</form>
ちなみに、'django.middleware.csrf.CsrfResponseMiddleware' を setting.py に追加すると、サーバーが壊れて 500 エラーが発生します。それが何を意味するのかわかりませんが、私はそれについて言及することにしました。