python - Angular : PUT, OPTIONS 方法的 Flask RESTful 跨域问题

标签 python angularjs flask cors flask-restful

我使用 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/

相关文章:

python - 使用Python的Requests库,无法调用API来正确格式化

javascript - 具有单值和 AngularJs $http json 处理的 WebApi 方法

javascript - Angular 服务 Jasmine 测试找不到 $http

javascript - AngularJS - 来自过滤器的空结果的占位符

python - Flask-Toastr安装

python:无法弄清楚为什么 len function() 的行为不如预期

python - 在 Django 中翻译文件时的 Git 命令

python - 捕捉语法错误

python - 从 Python Flask 中的链接获取信息

python - Flask 可插入 View 和需要登录