Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Get http header ?
#1
I'm using the wsgiref module to run an application and I need to get the request header that comes from the client's browser to handle http responses, how could I proceed ?
Reply
#2
Hello!

An example from Python official docs:

from wsgiref.util import setup_testing_defaults
from wsgiref.simple_server import make_server

# A relatively simple WSGI application. It's going to print out the
# environment dictionary after being updated by setup_testing_defaults
def simple_app(environ, start_response):
    setup_testing_defaults(environ)
    
    for key in environ.keys(): # Headers here. "environ" is a dictionary !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        print(key)

    status = '200 OK'
    headers = [('Content-type', 'text/plain; charset=utf-8')]

    start_response(status, headers)

    ret = [("%s: %s\n" % (key, value)).encode("utf-8")
           for key, value in environ.items()]
    return ret

with make_server('', 8000, simple_app) as httpd:
    print("Serving on port 8000...")
    httpd.serve_forever()
BASH curl request with a custom heeader
curl --header "X-MyHeader: 123" localhost:8000  
And you can see it printed in the output
Output:
LC_COLLATE CONDA_EXE TERM_PROGRAM SSH_AUTH_SOCK CONDA_DEFAULT_ENV PWD DESKTOP_SESSION GTK_MODULES XDG_SESSION_TYPE SHELL GNOME_DESKTOP_SESSION_ID CONDA_PREFIX COLORTERM GJS_DEBUG_TOPICS CONDA_PYTHON_EXE MOTD_SHOWN HOME LANG XDG_CURRENT_DESKTOP XDG_SEAT_PATH GJS_DEBUG_OUTPUT XDG_SESSION_CLASS GTK_OVERLAY_SCROLLING ORIGINAL_XDG_CURRENT_DESKTOP LOGNAME NO_AT_BRIDGE CONDA_SHLVL XDG_SESSION_PATH DBUS_SESSION_BUS_ADDRESS GIO_LAUNCHED_DESKTOP_FILE GTK3_MODULES XDG_RUNTIME_DIR APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL XDG_VTNR GIO_LAUNCHED_DESKTOP_FILE_PID VSCODE_GIT_ASKPASS_NODE PATH USER SHLVL TERM_PROGRAM_VERSION CONDA_PROMPT_MODIFIER GIT_ASKPASS XAUTHORITY MAIL DISPLAY XDG_SESSION_ID VSCODE_GIT_IPC_HANDLE SESSION_MANAGER VSCODE_GIT_ASKPASS_EXTRA_ARGS GDK_BACKEND VSCODE_GIT_ASKPASS_MAIN XDG_SEAT CINNAMON_VERSION TERM CHROME_DESKTOP SERVER_NAME GATEWAY_INTERFACE SERVER_PORT REMOTE_HOST CONTENT_LENGTH SCRIPT_NAME SERVER_PROTOCOL SERVER_SOFTWARE REQUEST_METHOD PATH_INFO QUERY_STRING REMOTE_ADDR CONTENT_TYPE HTTP_HOST HTTP_USER_AGENT HTTP_ACCEPT HTTP_X_MYHEADER # Here is the custom header !!!!!!!!!!!!!!!! wsgi.input wsgi.errors wsgi.version wsgi.run_once wsgi.url_scheme wsgi.multithread wsgi.multiprocess wsgi.file_wrapper
I guess that all headers are those environ keys starting with "HTTP" near the end of the output
JohnnyCoffee likes this post
"As they say in Mexico 'dosvidaniya'. That makes two vidaniyas."
https://freedns.afraid.org
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020