i have following base class:
class corshandler(tornado.web.requesthandler): def set_default_headers(self): super(corshandler, self).set_default_headers() self.set_header('access-control-allow-origin', self.request.headers.get('origin', '*')) self.set_header('access-control-allow-methods', 'get, put, post, delete, options') self.set_header('access-control-allow-credentials', 'true') self.set_header('access-control-allow-headers', ','.join( self.request.headers.get('access-control-request-headers', '').split(',') + ['content-type'] )) self.set_header('content-type', 'application/json') def options(self, *args, **kwargs): pass and following handler:
def get(self, resource_id=none, field=none): try: if resource_id none: response = self.resource.query.filter_by(is_deleted=false).all() else: record = self.resource.query.get(int(resource_id)) if field none: response = record else: response = {field: getattr(record, field)} self.db.session.commit() except exception, e: self.db.session.rollback() self.send_error(500, message=e.message) self.write(response) everything's pretty straightforward, except content-type not getting set. note other header being set properly.

what's going on?
it seems 304 not modified response. remember first 200 ok response contains content-type header. following response neglect header if requesting same resource.
and beware don't need explicitly set content-type. if source code of tornado, find in comment of write(self, chunk):
if given chunk dictionary, write json , set content-type of response
application/json. (if want send json differentcontent-type, call set_header after calling write()).
Comments
Post a Comment