在我的flask api文件(api.py)中,我想得到标题" USER"在他发送请求时联系他。所以我有这条线:
@app.before_request
def prepare():
print('Step 1 : {}'.format(request.headers.get("USER")), file=sys.stdout)
username = request.headers.get("USER")
user = find.user_by_username(username)
print('Step 2', file=sys.stdout)
在我的前端,我有一个ajax请求来获取用户的任务:
$.ajax({
url : urlBackend+"weapon/"+weapon,
type : 'GET',
dataType : 'json',
headers: {
'USER':'toto'
},
success : function(resu, statut){
//I get the weapon of my user
},
error : function(resultat, statut, erreur){
console.log("resultat : "+dump(resultat)+"; statut : "+statut+"; erreur : "+erreur);
},
complete : function(resultat, statut){
}
});
我的问题是我的功能准备(在文件api.py中)找不到用户。在我的控制台中,它不打印"步骤1:toto步骤2"但是"步骤1:无"
有人知道我做错了什么?
答案 0 :(得分:0)
如果您出于特殊原因使用自定义标头发送数据,我想知道。 您的请求的问题是,您是将其指定为GET请求,但使用的方法是OPTIONS。这是因为你从不发送任何数据
如果你改变这一点:
headers: {
'USER':'toto'
},
为:
data: {
'USER':'toto'
},
在你的@ app.before_request中使用:
print('Step 1 : {}'.format(request.args.get('USER')), file=sys.stdout)
username = request.args.get('USER')
user = find.user_by_username(username)
print('Step 2', file=sys.stdout)
这实际上会发送数据。如果有帮助,请告诉我
答案 1 :(得分:0)
最后我的问题来自这样一个事实:当我使用" header"在我的jquery请求中添加标题时或者" beforeSend" (由于我不知道的原因)他们不会只有2个请求会被发送到烧瓶。
第一个请求方法:" OPTIONS"第二个将是真正的jquery请求。但就像在第一个它们没有标题时它失败了,请求就在这里停止。
所以为了解决这个问题,我在我的函数准备开始时添加了if request.method != 'OPTIONS':
。