python - abort method in Flask-Restful ignoring CORS options -


i have flask-restful api configured cors options:

api = api() api.decorators=[cors.crossdomain(origin='*', headers=['accept', 'content-type'])]  ...  api.init_app(app) 

my api accepts post requests may fail if data in request invalid:

class myapi(resource):     def post(self):         args = request.get_json()         if args.get('something'):             return {'message': 'request worked, data received!',                     'something': args['something']}         else:             abort(500, "error: data must contain 'something' field!") 

when make successful post request api can see cors options set:

... * upload sent off: 81 out of 81 bytes * http 1.0, assume close after body < http/1.0 200 ok < content-type: application/json < content-length: 205 < access-control-allow-origin: * < access-control-allow-methods: head, get, post, options < access-control-max-age: 21600 < access-control-allow-headers: accept, content-type < server: werkzeug/0.9.4 python/2.7.6 

if, however, post call in class exits through abort method (by purposely sending bad data request) access-control-* fields missing response:

* upload sent off: 75 out of 75 bytes * http 1.0, assume close after body < http/1.0 500 internal server error < content-type: application/json < content-length: 51 < server: werkzeug/0.9.4 python/2.7.6 

is possible make abort method play nice cors rules, or should create own full-fledged response , avoid using abort function?

when trigger abort, error handler registered http error code automatically invoked, , response not served view function.

if use cors middleware provided flask-cors, instead of decorator form, in case of handled exceptions , aborts, cors headers injected expected.

if unhandled exception occurs, (e.g. there error in code, , 500 internal server error), flask bypasses middleware, , after_request handlers not run.

full disclosure, wrote flask-cors.


Comments

Popular posts from this blog

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

php - render data via PDO::FETCH_FUNC vs loop -

The canvas has been tainted by cross-origin data in chrome only -