トップページ以外にアクセスをしたときにトップページに遷移するようにしたく、Redirectviewを使用しました。
urls.py
from django.urls import path, re_path from django.views.generic import TemplateView, RedirectView urlpatterns = [ path("", TemplateView.as_view(template_name='index.html')), re_path("", RedirectView.as_view(url='/')), ]
RedirectViewによりトップページに遷移したあと、APIでPOST送信を行うとCSRF検証のエラーが出力されます。
アクセス禁止 (403) CSRF検証に失敗したため、リクエストは中断されました。 Help Reason given for failure: CSRF token missing. In general, this can occur when there is a genuine Cross Site Request Forgery, or when Django’s CSRF mechanism has not been used correctly. For POST forms, you need to ensure: Your browser is accepting cookies. The view function passes a request to the template’s render method. In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL. If you are not using CsrfViewMiddleware, then you must use csrf_protect on any views that use the csrf_token template tag, as well as those that accept the POST data. The form has a valid CSRF token. After logging in in another browser tab or hitting the back button after a login, you may need to reload the page with the form, because the token is rotated after a login. You’re seeing the help section of this page because you have DEBUG = True in your Django settings file. Change that to False, and only the initial error message will be displayed. You can customize this page using the CSRF_FAILURE_VIEW setting.
re_path("", RedirectView.as_view(url='/')), をコメントアウトすると、CSRF検証エラーは出力されません。トップページではwebpackで作成したフロントエンドのJSファイルを表示するhtmlを表示しています。
index.html
<!DOCTYPE html> {% load static %} <html lang="en"> <head> <meta charset="utf-8"> <title>テストページ</title> </head> <body> <div id="root"></div> <script src="/static/js/bundle.js" ></script> </body> </html>
CSRF検証エラーを回避するには、どうすればよいでしょうか。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。