2012-02-17 25 views
5

Próbowałem, ale dowiedziałem się, że iOS 5 domyślnie nie akceptuje ciasteczek. Próbowałem wielu różnych rzeczy, nawet używając Redis, ale nadal nie mogę uzyskać sesji, która mogłaby przetrwać więcej niż jedno żądanie.Sesja Node.JS bez plików cookie

Bez korzystania z plików cookie, jakie są inne opcje sesji? Mam zamiar przetasować surowy moduł sesji za pomocą Redisa, gdzie wysyłam swój własny "identyfikator sesji" do i od, ale wydaje się, że może to łatwo zahamować.

Odpowiedz

2

Jestem prawie pewien, że będziesz chciał używać plików cookie. Inną alternatywą byłoby dołączenie identyfikatora sesji do każdego żądania za pomocą parametru URL i utrzymywanie go w całej aplikacji z wykorzystaniem pewnego rodzaju oprogramowania pośredniczącego, aby upewnić się, że jest dołączane do każdego adresu URL. Możesz to zrobić, parsując odpowiedzi lub przejmując silnik szablonów, aby uwzględnić to w każdym łączu i formularzu. Uważam to za dziwne, że iOS nie ma ciasteczek. Jestem prawie pewien, że jest to niepoprawne, czy możesz umieścić link tam, gdzie to czytasz?

+0

W rzeczywistości twój post o toczeniu własnej sesji jest prawie dokładnie tym, co zrobiłem. Łączę cię z Githubem. Powinieneś być w stanie utrzymać go w pamięci lokalnej. Nie widziałem, że to najprawdopodobniej sencha. Sprawdź to ----> https://gist.github.com/1155365 –

5

Jeśli nie możesz poprosić klienta o obsługę plików cookie, być może możesz umieścić dane w LocalStorage, a następnie przekazać je do serwera, aby połączyć się z sesją, i ułożyć je jak aplikację z jedną stroną.

To by wyglądać tak:

server       |   client 
send initial payload, with token -->  store token in LocalStorage 
initial payload contains some script 

           <-- XHR request for /data?sessid=XXXXX 
look up session, do stuff  --> handle result, update DOM, do more XHR 

są gniazda sieciowe obsługiwane? Możesz użyć Socket.io, aby wykonać transport, który byłby o wiele mniej opóźniony.

Powiązane problemy