我在尝试为restapi设置CORS时遇到问题。 我当前使用的是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已经在处理选项请求了,我什么也没告诉他。(根据this link,这是有意义的,提到自从Flask0.6以来,选项请求是自动处理的)
我的问题是,即使我尝试用以下方法装饰端点:
^{pr2}$什么都没变,结果还是和以前一样。我从OPTIONS请求中得到了一个http200,但在响应中没有看到我的新头(即访问控制Allow Origin)。在
我错过什么了吗?在
我也遇到了一个CORS问题并解决了它this way:
使用Flask-CORS,它可以工作:
在我的笔记本电脑和浏览器上进行本地测试时,我可以通过在响应中添加头来解决cors问题。在
之前:
return state, 200
之后:
return state, 200, {'Access-Control-Allow-Origin': '*'}
相关问题 更多 >
编程相关推荐