У меня работает django -сервер , который работает с сессиями . Простой пример из моего 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 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(
)
Таким образом, очевидно, что у клиента нет постоянного соединения, где сеанс не сохраняется. Но в соответствии с do c https://pub.dev/packages/http это должно работать
Если вы делаете несколько запросов к одному и тому же серверу, вы можете сохранить постоянное соединение, используя Клиент, а не разовые запросы
Это проблема моего приложения флаттера / дротика или проблема на моем сервере? Возможно, он большой в пакете флаттера?
примечание: сначала я подумал, что это может быть проблемой с аутентификацией csrf, поэтому отключил ее на моем сервере, но это ничего не меняет ...