Skip to content

Commit 5bd0d2c

Browse files
authored
Merge pull request #16 from netz39/15-send-cors-headers
Send CORS headers
2 parents 6d54030 + f568c52 commit 5bd0d2c

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

src/app.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/usr/bin/python3
22
from abc import ABC
3+
from typing import Any
34

45
import tornado.ioloop
56
import tornado.web
@@ -21,6 +22,21 @@
2122

2223
startup_timestamp = datetime.now()
2324

25+
class BaseCORSHandler(tornado.web.RequestHandler):
26+
def set_default_headers(self):
27+
self.set_header("Access-Control-Allow-Origin", "*")
28+
self.set_header("Access-Control-Allow-Headers", "x-requested-with, content-type")
29+
self.set_header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
30+
31+
def options(self, *args, **kwargs):
32+
self.set_default_headers()
33+
self.set_status(204)
34+
self.finish()
35+
36+
def write_error(self, status_code: int, **kwargs: Any) -> None:
37+
self.set_default_headers()
38+
super().write_error(status_code, **kwargs)
39+
2440

2541
class HealthHandler(tornado.web.RequestHandler, ABC):
2642
# noinspection PyAttributeOutsideInit
@@ -74,17 +90,17 @@ def get(self):
7490
self.finish()
7591

7692

77-
class SpaceAPIHandler(tornado.web.RequestHandler, ABC):
93+
class SpaceAPIHandler(BaseCORSHandler, ABC):
7894
# noinspection PyAttributeOutsideInit
7995
def initialize(self, observer):
8096
self.observer = observer
8197

8298
def get(self):
83-
self.set_header("Content-Type", "application/json")
99+
self.set_header("Content-Type", "application/json; charset=utf-8")
84100
self.write(json.dumps(self.observer.get_space_api_entry(), indent=4))
85101
self.finish()
86102

87-
class SpaceStateTextHandler(tornado.web.RequestHandler, ABC):
103+
class SpaceStateTextHandler(BaseCORSHandler, ABC):
88104
# noinspection PyAttributeOutsideInit
89105
def initialize(self, observer):
90106
self.observer = observer
@@ -95,7 +111,7 @@ def get(self):
95111
self.finish()
96112

97113

98-
class PictureHandler(tornado.web.RequestHandler, ABC):
114+
class PictureHandler(BaseCORSHandler, ABC):
99115
# noinspection PyAttributeOutsideInit
100116
def initialize(self, picture_manager):
101117
self.picture_manager = picture_manager

0 commit comments

Comments
 (0)