【问题标题】:Send an specific header by ajax to flask通过 ajax 将特定标头发送到烧瓶
【发布时间】:2023-04-03 00:39:01
【问题描述】:

在我的烧瓶 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 中)找不到用户。在我的控制台中,它不打印“Step 1 : toto Step 2”,而是“Step 1 : None”

有人知道我做错了什么吗?

【问题讨论】:

  • 您能否提供更多代码,尤其是在您呈现模板的地方。或者你如何运行 ajax 调用?
  • 苏尔,所以首先我不渲染模板。我只是调用我的烧瓶 api 来获取一些用于填充前端部分的 json 文件。实际上我的前端在127.0.0.1:80,我的烧瓶打开127.0.0.1:5000 接下来,我只是在页面加载时运行ajax。$(document).ready(function() { viewWeapon("sword"); });而函数“viewWeapon(weapon)”只有我在上面放的 ajax 请求。

标签: jquery python ajax python-3.x flask


【解决方案1】:

如果您出于特殊原因使用自定义标头发送数据,我想知道。 您的请求的问题在于,您将其指定为 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)

这将实际发送数据。如果这有帮助,请告诉我

【讨论】:

  • 我很高兴,如果我喜欢这样做,它会起作用,但我无法调整 python 部分。所以我只想找到一种方法在我的 ajax 请求中发送标头。
【解决方案2】:

最后我的问题来自这样一个事实,即当我使用“header”或“beforeSend”在我的 jquery 请求中添加一个标头时(出于我不知道的原因),它们将不是一个,而是 2 个请求发送到烧瓶中。

第一个带有请求方法:“OPTIONS”,第二个是真正的 jquery 请求。但就像第一次一样,它们的 is no header 它失败并且请求在这里停止。

为了解决这个问题,我在函数prepare的开头添加了if request.method != 'OPTIONS':

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 2018-03-06
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多