【发布时间】:2019-04-28 01:00:44
【问题描述】:
GET 工作正常。我似乎无法让 PUT 工作,我担心 POST 也不能正常工作。
一直报错
Access to XMLHttpRequest at '<...>' from origin 'https://localhost:3000' has been blocked by CORS policy: Method PUT is not allowed by Access-Control-Allow-Methods in preflight response.
我有一个本地 web 应用程序,它调用外部 api,这意味着 CORS 将是我应该解决的障碍之一。
这是我的烧瓶代码。
@blueprint.route('/profiles/<oi_id>', methods=['POST'])
@cross_origin(send_wildcard=True, methods=['POST', 'OPTIONS'])
def create_checkin_profile(oi_id):
return jsonify(cph.create_owner_profile_info(oi_id, json.loads(request.data)))
@blueprint.route('/profiles/<oi_id>', methods=['PUT'])
@cross_origin(send_wildcard=True, methods=['PUT', 'OPTIONS'])
def edit_checkin_profile(oi_id):
return jsonify(cph.edit_owner_profile_info(oi_id, json.loads(request.data)))
这很令人困惑,因为我很确定我允许 PUT。 我在反应应用程序上为此使用 axios。这是我的 call-api 函数。
axios({
method: 'PUT',
url: url,
timeout: 3000,
data: data,
headers: {
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json",
Accept: "application/json",
},
});
【问题讨论】:
-
从 React 方面,在我看来你的实现是正确的,请检查如何处理烧瓶中的 cors。
-
我刚刚使用了 Flask-Cors。 @cross_origin() 装饰器,它应该很好地处理 CORS 请求。这就是为什么我很困惑为什么它不起作用。
-
我不是蟒蛇人。所以无法确认,但这可能会对您有所帮助:stackoverflow.com/questions/39550920/…
标签: python reactjs flask axios flask-cors