7f65b06033
This adds the CORS support middleware to Neutron, allowing a deployer to optionally configure rules under which a javascript client may break the single-origin policy and access the API directly. For neutron, both the paste.ini and the direct-wrap method of deploying the middleware were chosen, since neutron is in a state of migration to pecan. Note that if someone deploys pecan-neutron behind other middleware, any responses provided by that middleware will not be CORS-enabled, as these responses would be returned before the headers could be annotated. This results in a response not readable by the user agent. OpenStack CrossProject Spec: http://specs.openstack.org/openstack/openstack-specs/specs/cors-support.html Oslo_Middleware Docs: http://docs.openstack.org/developer/oslo.middleware/cors.html OpenStack Cloud Admin Guide: http://docs.openstack.org/admin-guide-cloud/cross_project_cors.html DocImpact: Add link to CORS configuration in admin cloud guide. Change-Id: I02acea6124d28370d92e7c94ca2d1d6c5c8937ac
38 lines
1.2 KiB
INI
38 lines
1.2 KiB
INI
[composite:neutron]
|
|
use = egg:Paste#urlmap
|
|
/: neutronversions
|
|
/v2.0: neutronapi_v2_0
|
|
|
|
[composite:neutronapi_v2_0]
|
|
use = call:neutron.auth:pipeline_factory
|
|
noauth = cors request_id catch_errors extensions neutronapiapp_v2_0
|
|
keystone = cors request_id catch_errors authtoken keystonecontext extensions neutronapiapp_v2_0
|
|
|
|
[filter:request_id]
|
|
paste.filter_factory = oslo_middleware:RequestId.factory
|
|
|
|
[filter:catch_errors]
|
|
paste.filter_factory = oslo_middleware:CatchErrors.factory
|
|
|
|
[filter:cors]
|
|
paste.filter_factory = oslo_middleware.cors:filter_factory
|
|
oslo_config_project = neutron
|
|
latent_allow_headers = X-Auth-Token, X-Openstack-Request-Id
|
|
latent_expose_headers = X-Auth-Token, X-Openstack-Request-Id
|
|
latent_allow_methods = GET, PUT, POST, DELETE, PATCH
|
|
|
|
[filter:keystonecontext]
|
|
paste.filter_factory = neutron.auth:NeutronKeystoneContext.factory
|
|
|
|
[filter:authtoken]
|
|
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
|
|
|
|
[filter:extensions]
|
|
paste.filter_factory = neutron.api.extensions:plugin_aware_extension_middleware_factory
|
|
|
|
[app:neutronversions]
|
|
paste.app_factory = neutron.api.versions:Versions.factory
|
|
|
|
[app:neutronapiapp_v2_0]
|
|
paste.app_factory = neutron.api.v2.router:APIRouter.factory
|