Djang中的412(前提条件失败)

2024-05-18 07:53:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个API端点,用于注册用户并由移动应用程序使用:

/mobile/v1/signup

我最近把这个应用从django1.7迁移到django1.10。在这之后,我开始犯这个奇怪的错误。如果此API第二次访问,则返回412 (precondition failed)错误。在

我在网上搜索,只要我明白,就会发生以下情况:

第一次,后端在响应中返回Etag。然后,这个Etag在第二次访问这个API时被发送回服务器。如果不匹配,则返回412。在

我通过手动设置此API响应的Etag头随机值来解决此问题:

^{pr2}$

但我不认为这是一个好的解决办法。在

正确的解决方法是什么?在

我的中间件:

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',
]

用户代理中间件:

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

Tags: 中间件django用户api应用程序request错误mobile