Не удалось найти часть запроса в зацикленном запросе с помощью httpresponseredirect | сессия не сохраняет ключ / значение

Я пытаюсь перенаправить на другой API для генерации случайного токена, и это в конечном итоге снова вернется к моему текущему URL-адресу, но когда перенаправленный URL-адрес фактически возвращается к функции, я не могу найти QUERY_STRING в request.META.

В промежуточном состоянии я могу видеть часть запроса. Промежуточное состояние (я нашел, предоставив инструкцию для печати), как показано ниже:

https://mysite.domain.com/api/home/?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6qh

В views.py:

def home(self, request):
    print("\nMeta: ", request.META) 
    # Prints -> 
    # Meta: {'HTTP_ACCEPT': 'application/json, text/plain, */*', 'HTTP_CONNECTION': 'keep-alive', 'REMOTE_ADDR': 'xx.xx.xx.xxx', 'HTTP_ORIGIN': 'https://mysite.domain.com', 'CONTENT_LENGTH': '', 'QUERY_STRING': '', 'wsgi.multithread': False, 'uwsgi.node': b'ip-xx-xx-xx-xx.aws.test.domain.com', 'wsgi.input': <uwsgi._Input object at 0x7f965c42b3a8>, 'CONTENT_TYPE': '', 'wsgi.multiprocess': False, 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': '', 'REMOTE_PORT': '62724', 'REQUEST_SCHEME': 'https', 'SERVER_PROTOCOL': 'HTTP/1.1', 'SERVER_NAME': 'mysite.domain.com', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate, br', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36', 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.9', 'wsgi.errors': <_io.TextIOWrapper name=2 mode='w' encoding='ANSI_X3.4-1968'>, 'REQUEST_URI': '/dboardrpt/', 'HTTP_HOST': 'mysite.domain.com', 'DOCUMENT_ROOT': '/etc/nginx/html', 'wsgi.file_wrapper': <built-in function uwsgi_sendfile>, 'HTTP_REFERER': 'https://mysite.domain.com/api/home', 'wsgi.version': (1, 0), 'wsgi.url_scheme': 'https', 'HTTPS': 'on', 'uwsgi.version': b'2.0.14', 'SERVER_PORT': '443', 'wsgi.run_once': False, 'PATH_INFO': '/home/'}

    # Where the `QUERY_STRING` is blank, and that why the below if statement is failing.

    if (request.GET.get('token')):
        ...
        # Business logic follows....
        ...
    else:
        URL = "https://authenticate.domain.com/api/get-new-token/"
        params = {
          'redirect_uri': "https://mysite.domain.com/api/home/",
          'secret_key': settings.SECRET_KEY
        }
        return (URL + HttpResponseRedirect + '?' + urlencode(params))

Мой settings.py:

INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'corsheaders',
   'rest_framework',
]

MIDDLEWARE = [
   'corsheaders.middleware.CorsMiddleware',
   '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',
]

SESSION_ENGINE = "django.contrib.sessions.backends.signed_cookies"

Часть запроса каким-то образом не сохраняется в сеансе. Я пробовал python manage.py migrate для синхронизации таблицы django_session.

Не уверен, что мне что-то не хватает в settings.py

Вы можете подтвердить, что request.GET.get('token') тоже пуст?

HP Bruna 13.09.2018 22:22

Спасибо за ответ. Да, я проверил. request.GET возвращает полностью пустой запрос. {}

iPaul 14.09.2018 07:21

И можете ли вы подтвердить, что перенаправление действительно идет на https://mysite.domain.com/api/home/?token=eyJ0eXAiOiJKV1QiLC‌​JhbGciOiJSUzI1NiIsIn‌​g1dCI6qh?

HP Bruna 14.09.2018 08:39

Да, он переходит к API https://authenticate..., и создается новый токен, который я вижу в URL-адресе как промежуточное состояние. Но когда он возвращается к первому блоку if после возврата, часть ?token=xxxxx каким-то образом исчезает. Но в идеале это должно быть в querydict request.GET. Django не может сохранить сеанс / файлы cookie.

iPaul 14.09.2018 10:28
1
4
23
0

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