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))