私は認証されたDjangoのWebサイトに対してカスタムのハンドブック404を作成して、情報漏えいを防いでいます。Djangoのカスタムハンドラ404は404を示していますが、ヘッダ200を与えます
def check_logged_in_404(request):
""" Custom 404. Show friendly 404 when logged in and redirect to /login
when not logged in.
"""
if request.user.is_authenticated():
return render_to_response('404.html')
else:
return HttpResponseRedirect('/login')
機能的には、私が欲しいものを機能させます。しかし、404の戻りページのステータスは200で、正しいコード単位です。しかし、これは明らかに404の返品ステータスである必要があります。
raise404は無限再帰で終了しないと、ここに戻り、同じ問題が発生するため、raise404は機能しません。
私はHttpResponseNotFoundを試しましたが、これはDRY-ishではないテンプレートではなく引数として文字列を受け取ります。
そして、私は手動でヘッダーを設定しようとしました:
response = render_to_response('404.html')
response['Status'] = "Not Found - 404"
return response
そして、ステータスヘッダは、実際に設定されていますが、ブラウザはまだ私はオプションの外だ200
を示して...誰それがヒントを持って、...私のヒーローにしてください:)
ありがとうとよろしく、
ジェラルド。
編集:私はすべての並べ替えところでにおけるステータスフィールドの値を試してみましたが、運:(
あなたは、これはうーん "render_to_string" について認識していなかった私を – dirk