【发布时间】:2020-04-24 00:17:19
【问题描述】:
我有一个正在运行的 django-server,它与 sessions 一起工作。这里给出了一个来自我的 views.py 的简单示例,它应该足以重现我的问题:
def test(request):
print("Session objects(")
for k,v in request.session.items():
print(k,v)
print(")")
request.session["a"] = "b"
所以这只是打印当前会话中的所有内容,然后在会话中保存一些虚拟数据。如果我第一次通过浏览器访问它,输出是
Session objects(
)
所以会话是空的,就像预期的那样。然后刷新站点后输出是:
Session objects(
a b
)
也如预期的那样,所以一切似乎都很好。
但现在我想将该网站与我的颤振应用程序一起使用。为此,我使用了 flutter packacke import 'package:http/http.dart' as http,如下所示:
var client = http.Client();
String host = ...; // just the ip:port to my host
void my_request() async {
var response = await client.get(host + "/path/to/test/");
response = await client.get(host + "/path/to/test/");
}
所以这应该做的就是两次请求我的网站,就像我之前在浏览器中手动做的那样。但是现在我的服务器只记录了两次:
Session objects(
)
所以很明显客户端有一个非持久连接,会话没有被保留。但是根据文档https://pub.dev/packages/http 这应该可以工作
如果您向同一个服务器发出多个请求,您可以使用客户端保持打开一个持久连接,而不是发出一次性请求
这是我的颤振/飞镖应用程序的问题还是我的服务器上的问题?它可能是颤振包中的一个大人物吗?
注意:我最初认为这可能是 csrf-authentication 的问题,所以在我的服务器上停用了它,但这并没有改变任何东西......
【问题讨论】:
-
peristenceConnection 属性的值是多少?如果为 False,请尝试将其设置为 True,看看是否有效。
标签: python django http flutter dart