我已经开发了一个带有Flask Restful的小型只写REST api,它接受来自少数可能具有更改IP地址的客户端的PUT请求.我的客户是运行AngularJS前端的嵌入式Chromium客户端; 他们使用简单的魔法密钥对我的API进行身份验证 - 这对我的规模非常有限.
我正在测试现在部署我的API,我注意到Angular客户端正在尝试向我的Flask服务发送OPTIONS http方法.我的API同时回复了404(因为我还没有编写OPTIONS处理程序,只有PUT处理程序).似乎在发送非POST或GET的跨域请求时,Angular将在服务器上发送一个pre-flight OPTIONS方法,以确保在发送实际请求之前接受跨域请求.是对的吗?
无论如何,我如何允许所有跨域PUT请求到Flask Restful API?我之前使用了带有(非宁静的)Flask实例的cross-domaion装饰器,但是我是否需要在我的API中编写OPTIONS处理程序?
在burn-restful上尝试新的CORS功能时,我发现只有在函数返回一个字符串时才能应用装饰器.
例如,修改Quickstart示例:
class HelloWorld(restful.Resource):
@cors.crossdomain(origin='*')
def get(self):
return {'hello': 'world'}
Run Code Online (Sandbox Code Playgroud)
抛出:
TypeError: 'dict' object is not callable
难道我做错了什么?