У меня проблема с попыткой настроить CORS для моего REST API.В настоящее время я использую пакет Flask-Restplus .Вот как выглядят мои конечные точки:
@api_ns.route('/some/endpoint')
@api_ns.response(code=400, description='Bad Request.')
class AEndpointResource(Resource):
@api_ns.param(**api_req_fields.POST_DOC)
@api_ns.expect(POST_REQUIRED_BODY)
@api_ns.marshal_with(code=201,
fields=my_api_models.MyEndpointResponse.get_serializer(),
description=my_api_models.MyEndpointResponse.description)
def post(self) -> Tuple[my_api_models.MyEndpointResponse, int]:
"""
The post body
"""
# Some logic here
return response, 200
Если я кодирую небольшой фрагмент кода javascript и пытаюсь запустить его в браузере, я получу ошибку, потому что нет заголовков CORS.Я вижу, что Flask-Restplus уже обрабатывает запрос OPTIONS, и я ничего ему не сказал.(Это имеет смысл в соответствии с этой ссылкой с упоминанием, что начиная с Flask 0.6 запросы OPTIONS обрабатываются автоматически)
Моя проблема в том, что даже когда я пытаюсь декорировать свою конечную точку, используя:
from flask-restplus import cors # <--- Adding this import
...
class AnEndpointResource(Resource):
...
@my_other_decorators
...
@cors.crossdomain(origin='*') # <--- Adding this new decorator on my endpoint
def post(self) -> Tuple[my_api_models.MyEndpointResponse, int]:
...
Ничего не меняется, и я все равно получаю тот же результат, что и раньше.Я получаю HTTP 200 из запроса OPTIONS, который автоматически обрабатывается, как и раньше, но я не вижу свои новые заголовки (т.е. Access-Control-Allow-Origin) в ответе.
Я что-то упустил?