我使用 Flask Restful 开发了一个小型的只写 REST api,它接受来自少数可能具有更改 IP 地址的客户端的 PUT 请求。我的客户是运行 AngularJS 前端的嵌入式 Chromium 客户端;他们使用一个简单的魔法 key 对我的 API 进行身份验证——这对于我非常有限的规模来说已经足够了。
我现在正在测试部署我的 API,我注意到 Angular 客户端正在尝试向我的 Flask 服务发送一个 OPTIONS http 方法。与此同时,我的 API 正在回复 404(因为我还没有编写 OPTIONS 处理程序,只有一个 PUT 处理程序)。似乎在发送不是 POST 或 GET 的跨域请求时,Angular 会在服务器发送一个 pre-flight OPTIONS 方法,以确保在发送实际请求之前接受跨域请求。对吗?
无论如何,如何允许所有跨域 PUT 请求到 Flask Restful API?我之前使用过带有(非 RESTful)Flask 实例的跨域装饰器,但我是否需要在我的 API 中也编写一个 OPTIONS 处理程序?
最佳答案
使用 Flask-CORS模块,您可以进行跨域请求无需更改代码。
from flask.ext.cors import CORS
app = Flask(__name__)
cors = CORS(app, resources={r"/api/*": {"origins": "*"}})
更新
作为 Eric建议,flask.ext.cors
模块现已弃用,您应该使用以下代码:
from flask_cors import CORS
app = Flask(__name__)
cors = CORS(app, resources={r"/api/*": {"origins": "*"}})
关于python - Angular : PUT, OPTIONS 方法的 Flask RESTful 跨域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19962699/