Skip to main content

WSGI request and response object

Project description Documentation Status

WebOb provides objects for HTTP requests and responses. Specifically it does this by wrapping the WSGI request environment and response status/headers/app_iter(body).

The request and response objects provide many conveniences for parsing HTTP request and forming HTTP responses. Both objects are read/write: as a result, WebOb is also a nice way to create HTTP requests and parse HTTP responses.

Support and Documentation

See the WebOb Documentation website to view documentation, report bugs, and obtain support.


WebOb is offered under the MIT-license.


WebOb was authored by Ian Bicking and is currently maintained by the Pylons Project and a team of contributors.

1.8.2 (2018-06-05)


1.8.1 (2018-04-10)


  • acceptparse.MIMEAccept which is deprecated in WebOb 1.8.0 made a backwards incompatible change that led to it raising on an invalid Accept header. This behaviour has now been reversed, as well as some other fixes to allow MIMEAccept to behave more like the old version. See

1.8.0 (2018-04-04)


  • request.POST now supports any requests with the appropriate Content-Type. Allowing any HTTP method to access form encoded content, including DELETE, PUT, and others. See


  • WebOb is no longer officially supported on Python 3.3 which was EOL’ed on 2017-09-29.

Backwards Incompatibilities

Experimental Features

These features are experimental and may change at any point in the future.


  • Exceptions now use string.Template.safe_substitute rather than string.Template.substitute. The latter would raise for missing mappings, the former will simply not substitute the missing variable. This is safer in case the WSGI environ does not contain the keys necessary for the body template. See
  • Request.host_url, Request.host_port, Request.domain correctly parse IPv6 Host headers as provided by a browser. See
  • Request.authorization would raise ValueError for unusual or malformed header values. See
  • Allow unnamed fields in form data to be properly transcoded when calling request.decode with an alternate encoding. See
  • Response.__init__ would discard app_iter when a Response had no body, this would cause issues when app_iter was an object that was tied to the life-cycle of a web application and had to be properly closed. app_iter is more advanced API for Response and thus even if it contains a body and is thus against the HTTP RFC’s, we should let the users shoot themselves by returning a body. See

Project details

Release history Release notifications | RSS feed

This version


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for WebOb, version 1.8.2
Filename, size File type Python version Upload date Hashes
Filename, size WebOb-1.8.2-py2.py3-none-any.whl (115.6 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size WebOb-1.8.2.tar.gz (271.7 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page