前端将请求发送到部署在其他域中的后端。
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”标头。
答案 0 :(得分:0)
经过一整天的调试,我终于找到了问题所在。它吐出了一个CORS错误,但实际上,它与此无关...但是,这让我头疼不已。
所以错误出在requirements.txt文件中。我使用pipreqs生成了它,而不是使用bcrypt,而是选择了生成python-bcrypt。因此,归根结底,这与CORS无关...但是我的依存关系有误。