首页 > 解决方案 > 无法通过发布请求将授权令牌发送到烧瓶 api

问题描述

我正在使用烧瓶编写一个用python编写的API,但我在发送带有授权的发布请求时遇到了麻烦。我正在使用 axios 来提出请求。

我尝试了在此链接上找到的几乎所有内容 [使用 Flask 解决跨源资源共享]

from flask import Flask, request, jsonify
from flask_cors import CORS, cross_origin

app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": "*"}})

@app.route("/test", methods=["POST","GET"])
# @cross_origin is commented for the get request
@cross_origin(methods=["POST"], allow_headers=['Content-
def test():
    return jsonify({'success':True})

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)
// change post to get
axios.post('http://localhost:5000/test', {
  // withCredentials: true,
  headers: {
    'Access-Control-Allow-Headers': 'Authorization',
    'Authorization': 'token'
  }
})
.then((response) => {
  console.log(response);
})
.catch((error) => {
  console.log(error);
});

当我使用 get 但不发布时,授权令牌出现在标题中

获取请求: https ://i.imgur.com/2COOjbj.png

发帖请求: https ://i.imgur.com/eWaFceS.png

编辑(已解决?)

不是真正的解决方案,但我切换到 fetch 并解决了我的问题,但我无法弄清楚它为什么会首先发生

标签: javascriptpythonflask

解决方案


您只需更改*with http://localhost:5000/test,您应该允许访问特定域。

另一种方法是flask-cors使用默认参数进行初始化:

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

推荐阅读