WSGI for Cross Origin Resource Sharing (CORS)
Project description
wsgicors
This is a WSGI middleware that answers CORS preflight requests and adds the needed header to the response. For CORS see: http://www.w3.org/TR/cors/
Usage
Either plug it in programmatically as in this pyramid example:
def app(global_config, **settings): """ This function returns a WSGI application. It is usually called by the PasteDeploy framework during ``paster serve``. """ def get_root(request): return {} config = Configurator(root_factory=get_root, settings=settings) config.begin() # whatever it takes to config your app goes here config.end() from wsgicors import CORS return CORS(config.make_wsgi_app(), headers="*", methods="*", maxage="180", origin="*")
You can also plug it into your wsgi pipeline via paste ini to let it serve by waitress for instance:
[app:myapp] use = egg:mysuperapp#app ### # wsgi server configuration ### [server:main] use = egg:waitress#main host = 0.0.0.0 port = 6543 [pipeline:main] pipeline = cors myapp [filter:cors] use = egg:wsgicors#middleware policy=free free_origin=copy free_headers=* free_methods=* free_maxage=180
Keywords are:
origin
headers
methods
credentials
maxage
for origin:
use copy which will copy whatever origin the request comes from
any other literal will be be copied verbatim (like * for instance to allow every source)
for headers:
use * which will allow whatever header is asked for
any other literal will be be copied verbatim (like * for instance to allow every source)
for methods:
use * which will allow whatever method is asked for
any other literal will be be copied verbatim (like POST, PATCH, PUT, DELETE for instance)
for credentials:
use true
anything else will be ignored (that is no response header for Access-Control-Allow-Credentials is sent)
for maxage:
give the number of seconds the answer can be used by a client, anything nonempty will be copied verbatim
As can bee seen in the example above, a policy needs to be created with the policy keyword. The options need then be prefixed with the policy name and a _.
Changes
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.