Django CSRF cookie не установлен при 403 ошибке для URL веб-хука

Я столкнулся с проблемой CSRF-защиты Django при попытке работы с веб-хуками Stripe на моем локальном хосте. Я получаю ошибку 403 Forbidden с сообщением "CSRF cookie not set." Ошибка возникает при попытке доступа к URL /collect-stripe-webhook/, который предназначен для обработки входящих webhook-запросов от Stripe.Also the payments go through and payment is successfull

urls.py

urlpatterns = [
    path('subscribe/', product_list, name='product_list'),
    path('create-checkout-session/<int:product_id>/', create_checkout_session, name='create_checkout_session'),
    path('collect-stripe-webhook/', stripe_webhook, name='stripe_webhook'),  # Updated path
    path('success/', TemplateView.as_view(template_name="subscriptions/success.html"), name='success'),
    path('cancel/', TemplateView.as_view(template_name="subscriptions/cancel.html"), name='cancel'),
]

views.py:

@csrf_exempt
def stripe_webhook(request):
    """
    View to handle Stripe webhooks.
    """
    payload = request.body
    sig_header = request.META.get('HTTP_STRIPE_SIGNATURE', None)
    endpoint_secret = settings.STRIPE_WEBHOOK_SECRET

    if not sig_header:
        logger.error("No signature header found in the request")
        return JsonResponse({'status': 'invalid request'}, status=400)

    try:
        event = stripe.Webhook.construct_event(
            payload, sig_header, endpoint_secret
        )
    except ValueError as e:
        logger.error(f"Invalid payload: {e}")
        return JsonResponse({'status': 'invalid payload'}, status=400)
    except stripe.error.SignatureVerificationError as e:
        logger.error(f"Invalid signature: {e}")
        return JsonResponse({'status': 'invalid signature'}, status=400)

    if event['type'] == 'checkout.session.completed':
        session = event['data']['object']
        handle_checkout_session(session)

    return HttpResponse(status=200)

Шаблон:

    <form action="{% url 'subscriptions:create_checkout_session' product.id %}" method="POST">
        {% csrf_token %}
        <button type="submit">Subscribe</button>
    </form>

Сообщение об ошибке:

Forbidden (CSRF cookie not set.): /collect-stripe-webhook/

Вопрос:

Что может быть причиной этой проблемы с CSRF-защитой Django, и как я могу решить ее, чтобы успешно работать с веб-хуками Stripe?

Вернуться на верх