Проверка CSRF не прошла с ошибкой 403 при развертывании на AWS elastic beanstalk

После создания проекта Django в локальной версии, где мы проверили, что все функции работают так, как ожидалось, мы наконец развернули его в Amazon Web Services Beanstalk. Но, к нашему ужасу, производственное приложение показало ошибку CSRF, которая никогда не наблюдалась на этапе разработки.

CSRF Verification Error

Вот пример кода:

models.py

class CustomerAccount(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    phone_number = models.CharField(max_length=50,blank=True)
    first_name = models.CharField(max_length=200, null=True,blank=True)
    last_name = models.CharField(max_length=200, null=True,blank=True)


urls.py

urlpatterns = [
    path('', views.index, name='customer-index'),
]

views.py

@login_required(login_url="/login/")
def index(request):

    if request.method == 'POST':
        form = CustomerForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('customers:customer-index')

    else:
        form = CustomerForm()

    context= {
        'form': form,
    }
    
    return render(request, 'customers/index.html', context)  

index.html


<div class="col-md-4">
    <div class="card p-3 mb-4 mx-2">
        <h3 class="text-center">New Customer</h3>
        <hr>
        <form method="POST" action="{% url 'customers:customer-index' %}">
            {% csrf_token %}
            {{ form|crispy }}
            <input class="btn btn-success btn-block" type="submit" value="Add Customer">
        </form>
    </div>
</div>

Дополнительные сведения о нашей конфигурации:

  • Внутри settings.py добавлено промежуточное ПО для CSRF
  • .
MIDDLEWARE = [
   ...
   'django.middleware.csrf.CsrfViewMiddleware',
   ...

]


Хотя мы рассмотрели некоторые решения, которые мы смогли найти, такие как
  • добавление @csrf_exempt перед функцией views
  • установка csrf token age на None
  • добавили атрибут action в тег формы

но несмотря на все эти усилия, beanstalk все еще показывает ту же ошибку.


Некоторые вещи, которые мы заметили в этой ошибке:

  • Проблема csrf автоматически решается периодически через некоторое время.
  • Шаблоны для некоторых представлений имеют старый/предыдущий id и не имеют обновленного значения первичного ключа, когда объекты с одинаковыми данными добавляются один за другим.
Вернуться на верх