所请求的资源上没有“ Access-Control-Allow-Origin”标头。 (Python烧瓶后端)

时间:2019-05-27 21:33:46

标签: javascript python flask cors axios

前端将请求发送到部署在其他域中的后端。

Front-end: https://budgeteer.now.sh
back-end: https://budgeteer-server.now.sh

GET请求工作正常,但是我得到了臭名昭著的“所请求的资源上没有'Access-Control-Allow-Origin'标头。”关于POST请求的错误消息。后端使用Python-Flask进行,请求使用AXIOS进行。

from flask_cors import CORS, cross_origin
CORS(app, supports_credentials=True)

@app.route('/login', methods=['POST'])
@cross_origin(supports_credentials=True)
def login_post():
    if 'username' in session.keys():
        return jsonify({"message": 'logged in'})
    body = request.get_json()
    users = mongo.db.budgeteer
    user = users.find_one({'username': body['username'].lower()})
    if user:
        if bcrypt.hashpw(body['password'].encode('utf-8'), user['password'].encode('utf-8')) == user['password'].encode('utf-8'):
            session.permanent = True
            session['username'] = body['username'].lower()
            check_recalculation()
            return jsonify({"message": 'logged in'})
    return jsonify({"message": 'invalid credentials'})
const axios = require("axios");
axios.defaults.withCredentials = true;
axios.defaults.headers = {
  "Content-Type": "application/json"
};
axios.defaults.crossDomain = true;
    async login() {
      if (this.username && this.password) {
        let res = await axios.post(this.urlLogin, {
          username: this.username.toString(),
          password: this.password.toString()
        });
      }
    }

CORS策略已阻止从来源“ https://budgeteer-server.now.sh/login”访问“ https://budgeteer.now.sh”处的XMLHttpRequest:请求的资源上没有“ Access-Control-Allow-Origin”标头。

1 个答案:

答案 0 :(得分:0)

经过一整天的调试,我终于找到了问题所在。它吐出了一个CORS错误,但实际上,它与此无关...但是,这让我头疼不已。

所以错误出在requirements.txt文件中。我使用pipreqs生成了它,而不是使用bcrypt,而是选择了生成python-bcrypt。因此,归根结底,这与CORS无关...但是我的依存关系有误。