Oct-14-2022, 11:06 PM
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 ?
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:8000And 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