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