Не удалось найти часть запроса в зацикленном обратном запросе с помощью HttpResponseRedirect |Сессия не сохраняет ключ / значение - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь перенаправить на другой 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))

Мои настройки.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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...