【问题标题】:flask session doesn't persist when invoke the call from c# mvc web application从 c# mvc Web 应用程序调用调用时,flask 会话不会持续存在
【发布时间】:2020-11-03 02:53:32
【问题描述】:

我在 python 烧瓶中编写了一个 Web 服务。 在我的代码中,我有烧瓶会话对象,它看起来不错。

这是一个简短的示例,我的 python 代码是什么样子的-

@app.route('/api/simpleTry', methods=['GET'])
def api_simple():
    user_id = request.args['id']
    sentence = request.args['sentence']

    if 'user_id' not in session.keys():
        session['user_id'] = user_id
    return jsonify("hello")
app.run()

当我通过“crome”资源管理器调用服务时,它运行良好,会话持续存在,当我 2 打开 2 个客户端(1-crome,2-incognito)时,我可以看到它们每个都有一个单独的会话。

此外, 我有一个 C# mvc Web 应用程序作为我的客户端,在那里我调用我编写的 python 烧瓶服务。

address = "http://localhost:5000/api/simpleTry?id=" + userId + "&sentence=" + sentence;
using (var w = new WebClient())
{
     json_data = w.DownloadString(address);
     ...
}

代码运行良好。 但是,与“crome”相反,当从 c# 发送请求时,python 中的会话不会持续存在并为每个请求创建一个新会话。

我想我应该从 C# 向服务发送一些东西以使用现有会话,但我不知道什么和如何。

【问题讨论】:

  • 您是否存储并发回了标头中返回的session cookie?

标签: python c# flask web-applications session-state


【解决方案1】:

Flask 会话使用 cookie 在客户端和服务器之间传递会话信息。当您使用浏览器时,浏览器是客户端并自动将 cookie 发送回服务器。当您使用 C# 客户端时,我不确定它是否会自动为您执行此操作。您可能需要从标头中读取 session cookie 并将其与后续请求一起发送。

来自Flask documentationThis is implemented on top of cookies for you and signs the cookies cryptographically

【讨论】:

  • 谢谢!我明白。我只是没有任何 idae 我应该如何在 c# 中做到这一点
猜你喜欢
  • 2019-09-26
  • 1970-01-01
  • 2019-05-25
  • 1970-01-01
  • 2011-10-29
  • 2015-09-12
  • 2011-12-19
  • 2022-01-17
  • 1970-01-01
相关资源
最近更新 更多