412 (предварительное условие не выполнено) в Джанго

У меня есть эта конечная точка API, которая регистрирует пользователя и используется мобильными приложениями:

/mobile/v1/signup

Я недавно перенес приложение из Django 1.7 в Django 1.10. После этого я начал получать эту странную ошибку. Если к этому API обращались во второй раз, он возвращает 412 (precondition failed) ошибка.

Я искал в сети и, насколько я понимаю, происходит следующее:

В первый раз возвращается бэкэнд Etag в ответ. Тогда это Etag затем отправляется обратно на сервер при втором доступе к этому API. Если это не совпадает, возвращается 412,

Я решил это, вручную установив случайное значение в заголовок Etag ответа этого API:

response['Etag'] = datetime.now().timestamp()
return response

Но я не думаю, что это хорошее решение.

Как правильно решить эту проблему?

Мое промежуточное программное обеспечение:

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    'msd.middleware.RequestIdMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'apps.dashboard.middleware.DashboardMiddleware',
    'api.middleware.UserAgentMiddleware',
]

UserAgentMiddleware:

class UserAgentMiddleware(MiddlewareMixin):
    # A middleware that adds a "user_agent" object to request
    def process_request(self, request):
        request.user_agent = SimpleLazyObject(lambda: get_user_agent(request))

0 ответов

Другие вопросы по тегам