Как проверить содержимое входящего запроса HTTP-заголовка - PullRequest
3 голосов
/ 24 марта 2011

Я играю с некоторыми API и пытаюсь понять это.

Я делаю простой HTTP-аутентифицированный запрос к моему серверу через API.В рамках этого запроса аутентифицированный ключ сохраняется в заголовке HTTP как имя пользователя.

Итак, мой вопрос: как мне получить содержимое входящего запроса, чтобы я мог проверить его?

Что я пытаюсь сделать:

if incoming request has header == 'myheader':
    do some stuff
else:
    return ('not authorised')

Для тех, кто заинтересован, я пытаюсь заставить этот работать.

ОБНОВЛЕНИЕ Я использую Django

Ответы [ 2 ]

6 голосов
/ 24 марта 2011

http://docs.djangoproject.com/en/dev/ref/request-response/

HttpRequest.META

A standard Python dictionary containing all available HTTP headers. 
Available headers depend on the client and server, but here are some examples:

        CONTENT_LENGTH
        CONTENT_TYPE
        HTTP_ACCEPT_ENCODING
        HTTP_ACCEPT_LANGUAGE
        HTTP_HOST -- The HTTP Host header sent by the client.
        HTTP_REFERER -- The referring page, if any.
        HTTP_USER_AGENT -- The client's user-agent string.
        QUERY_STRING -- The query string, as a single (unparsed) string.
        REMOTE_ADDR -- The IP address of the client.
        REMOTE_HOST -- The hostname of the client.
        REMOTE_USER -- The user authenticated by the Web server, if any.
        REQUEST_METHOD -- A string such as "GET" or "POST".
        SERVER_NAME -- The hostname of the server.
        SERVER_PORT -- The port of the server.

За исключением CONTENT_LENGTH и CONTENT_TYPE, как как указано выше, любые HTTP-заголовки в запрос конвертируется в ключи META преобразование всех символов в верхний регистр, заменяя любые дефисы подчеркивание и добавление префикса HTTP_ на имя. Так, например, заголовок называется X-Bender будет сопоставлен с Ключ META HTTP_X_BENDER.

Итак:

if request.META['HTTP_USERNAME']:
    blah
else:
    blah
2 голосов
/ 24 марта 2011

Заголовки хранятся в os.environ. Таким образом, вы можете получить доступ к заголовкам HTTP следующим образом:

import os
if os.environ.haskey("SOME_HEADER"):
  # do something with the header, i.e. os.environ["SOME_HEADER"]
...