Return an empty body for OPTIONS requests. (#7886)
This commit is contained in:
parent
1ec688bf21
commit
6a080ea184
|
@ -0,0 +1 @@
|
||||||
|
Return an empty body for OPTIONS requests.
|
|
@ -442,21 +442,6 @@ class StaticResource(File):
|
||||||
return super().render_GET(request)
|
return super().render_GET(request)
|
||||||
|
|
||||||
|
|
||||||
def _options_handler(request):
|
|
||||||
"""Request handler for OPTIONS requests
|
|
||||||
|
|
||||||
This is a request handler suitable for return from
|
|
||||||
_get_handler_for_request. It returns a 200 and an empty body.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
request (twisted.web.http.Request):
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
Tuple[int, dict]: http code, response body.
|
|
||||||
"""
|
|
||||||
return 200, {}
|
|
||||||
|
|
||||||
|
|
||||||
def _unrecognised_request_handler(request):
|
def _unrecognised_request_handler(request):
|
||||||
"""Request handler for unrecognised requests
|
"""Request handler for unrecognised requests
|
||||||
|
|
||||||
|
@ -490,11 +475,12 @@ class OptionsResource(resource.Resource):
|
||||||
"""Responds to OPTION requests for itself and all children."""
|
"""Responds to OPTION requests for itself and all children."""
|
||||||
|
|
||||||
def render_OPTIONS(self, request):
|
def render_OPTIONS(self, request):
|
||||||
code, response_json_object = _options_handler(request)
|
request.setResponseCode(204)
|
||||||
|
request.setHeader(b"Content-Length", b"0")
|
||||||
|
|
||||||
return respond_with_json(
|
set_cors_headers(request)
|
||||||
request, code, response_json_object, send_cors=True, canonical_json=False,
|
|
||||||
)
|
return b""
|
||||||
|
|
||||||
def getChildWithDefault(self, path, request):
|
def getChildWithDefault(self, path, request):
|
||||||
if request.method == b"OPTIONS":
|
if request.method == b"OPTIONS":
|
||||||
|
|
|
@ -193,10 +193,10 @@ class OptionsResourceTests(unittest.TestCase):
|
||||||
return channel
|
return channel
|
||||||
|
|
||||||
def test_unknown_options_request(self):
|
def test_unknown_options_request(self):
|
||||||
"""An OPTIONS requests to an unknown URL still returns 200 OK."""
|
"""An OPTIONS requests to an unknown URL still returns 204 No Content."""
|
||||||
channel = self._make_request(b"OPTIONS", b"/foo/")
|
channel = self._make_request(b"OPTIONS", b"/foo/")
|
||||||
self.assertEqual(channel.result["code"], b"200")
|
self.assertEqual(channel.result["code"], b"204")
|
||||||
self.assertEqual(channel.result["body"], b"{}")
|
self.assertNotIn("body", channel.result)
|
||||||
|
|
||||||
# Ensure the correct CORS headers have been added
|
# Ensure the correct CORS headers have been added
|
||||||
self.assertTrue(
|
self.assertTrue(
|
||||||
|
@ -213,10 +213,10 @@ class OptionsResourceTests(unittest.TestCase):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_known_options_request(self):
|
def test_known_options_request(self):
|
||||||
"""An OPTIONS requests to an known URL still returns 200 OK."""
|
"""An OPTIONS requests to an known URL still returns 204 No Content."""
|
||||||
channel = self._make_request(b"OPTIONS", b"/res/")
|
channel = self._make_request(b"OPTIONS", b"/res/")
|
||||||
self.assertEqual(channel.result["code"], b"200")
|
self.assertEqual(channel.result["code"], b"204")
|
||||||
self.assertEqual(channel.result["body"], b"{}")
|
self.assertNotIn("body", channel.result)
|
||||||
|
|
||||||
# Ensure the correct CORS headers have been added
|
# Ensure the correct CORS headers have been added
|
||||||
self.assertTrue(
|
self.assertTrue(
|
||||||
|
|
Loading…
Reference in New Issue