Add CORS filter to versions pipeline
This patch exposes the root (version) resource to CORS-enabled browser clients that wish to perform API version discovery. This feature is required for js-openstack-lib, and its devstack tests. https://review.openstack.org/#/c/370389/ Change-Id: I4052186bffa3bddb4d28e378e6a135694a71e05b Needed-By: Ia19afa530ae8c2df60db740cec9267fe240978c0
This commit is contained in:
parent
6c5824d72f
commit
706f104e33
@ -61,7 +61,7 @@ paste.filter_factory = nova.api.openstack:LegacyV2CompatibleWrapper.factory
|
||||
paste.app_factory = nova.api.openstack.compute:APIRouterV21.factory
|
||||
|
||||
[pipeline:oscomputeversions]
|
||||
pipeline = faultwrap http_proxy_to_wsgi oscomputeversionapp
|
||||
pipeline = cors faultwrap http_proxy_to_wsgi oscomputeversionapp
|
||||
|
||||
[app:oscomputeversionapp]
|
||||
paste.app_factory = nova.api.openstack.compute.versions:Versions.factory
|
||||
|
@ -96,3 +96,27 @@ class TestCORSMiddleware(api_sample_base.ApiSampleTestBaseV21):
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertNotIn('Access-Control-Allow-Origin', response.headers)
|
||||
|
||||
def test_valid_cors_get_versions_request(self):
|
||||
response = self._do_get('',
|
||||
strip_version=True,
|
||||
headers={
|
||||
'Origin': 'http://valid.example.com',
|
||||
'Access-Control-Request-Method': 'GET'
|
||||
})
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn('Access-Control-Allow-Origin', response.headers)
|
||||
self.assertEqual('http://valid.example.com',
|
||||
response.headers['Access-Control-Allow-Origin'])
|
||||
|
||||
def test_invalid_cors_get_versions_request(self):
|
||||
response = self._do_get('',
|
||||
strip_version=True,
|
||||
headers={
|
||||
'Origin': 'http://invalid.example.com',
|
||||
'Access-Control-Request-Method': 'GET'
|
||||
})
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertNotIn('Access-Control-Allow-Origin', response.headers)
|
||||
|
@ -0,0 +1,6 @@
|
||||
---
|
||||
upgrade:
|
||||
- CORS headers have been added to the versions REST API, in order
|
||||
to support versions discovery. If using 'oscomputeversions'
|
||||
pipeline in '/etc/nova/api-paste.ini', it is required to update the
|
||||
pipeline to include 'cors' filter.
|
Loading…
x
Reference in New Issue
Block a user