Skip to content
Snippets Groups Projects
Commit f8d0de21 authored by Valentin Rigal's avatar Valentin Rigal Committed by Bastien Abadie
Browse files

Allow any request origin for IIIF endpoints

parent 4ddd238f
No related branches found
No related tags found
1 merge request!2139Allow any request origin for IIIF endpoints
......@@ -5,4 +5,5 @@ class DocumentsConfig(AppConfig):
name = 'arkindex.documents'
def ready(self):
from arkindex.documents import signals # noqa: F401
from arkindex.project import checks # noqa: F401
from corsheaders.signals import check_request_enabled
# List of endpoint open to any cross origin request
OPEN_CORS_API = (
('api', 'folder-manifest'),
('api', 'element-annotation-list'),
)
def cors_allow_any_origin(sender, request, **kwargs):
route_match = request.resolver_match
if route_match is None:
return False
return (route_match.namespace, route_match.url_name) in OPEN_CORS_API
check_request_enabled.connect(cors_allow_any_origin)
from django.urls import reverse
from arkindex.documents.models import Element
from arkindex.project.tests import FixtureAPITestCase
class TestOpenCors(FixtureAPITestCase):
@classmethod
def setUpTestData(cls):
super().setUpTestData()
cls.vol = Element.objects.get(name='Volume 1')
def test_cors_open_endpoint(self):
response = self.client.get(
reverse('api:folder-manifest', kwargs={'pk': self.vol.id}),
HTTP_ORIGIN="http://anywhere.net",
)
self.assertEqual(response.headers.get('Access-Control-Allow-Origin'), 'http://anywhere.net')
def test_cors_closed_endpoint(self):
response = self.client.get(
reverse('api:element-retrieve', kwargs={'pk': self.vol.id}),
HTTP_ORIGIN="http://anywhere.net",
)
self.assertFalse('Access-Control-Allow-Origin' in response.headers.keys())
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment