2012-02-17 39 views
5

Tôi đã thử nhưng tôi đã phát hiện ra rằng iOS 5 theo mặc định không chấp nhận cookie. Tôi đã thử nhiều thứ khác nhau ngay cả khi sử dụng Redis nhưng vẫn không thể nhận được một phiên để tồn tại cho nhiều hơn một yêu cầu.Node.JS phiên không có cookie

Không sử dụng cookie, tôi có các tùy chọn phiên nào khác? Tôi sắp cuộn một mô-đun phiên thô bằng cách sử dụng Redis, nơi tôi chỉ gửi "id phiên" của riêng mình đến và đi nhưng có vẻ như nó có thể dễ dàng phanh.

Trả lời

2

Tôi gần như chắc chắn bạn sẽ muốn sử dụng cookie. Một lựa chọn khác sẽ là gắn thêm một session id cho mọi yêu cầu thông qua một tham số url và duy trì điều này trên ứng dụng của bạn bằng cách sử dụng một số loại phần mềm trung gian để đảm bảo nó được nối vào mọi URL. Bạn có thể làm điều này bằng cách phân tích cú pháp câu trả lời của bạn hoặc bằng cách cướp công cụ mẫu của bạn để bao gồm điều này trong mọi liên kết và biểu mẫu. Tôi thấy thật lạ khi iOS không có cookie. Tôi gần như chắc chắn rằng điều này là không chính xác, bạn có thể vui lòng liên kết nơi bạn đọc đó?

+0

Trên thực tế, bài đăng của bạn về việc điều chỉnh phiên của riêng bạn gần như chính xác những gì tôi đã làm. Ill liên kết bạn trên github. Bạn sẽ có thể duy trì nó trong bộ nhớ cục bộ. Tôi không thấy rằng điều này rất có thể là sencha. Kiểm tra điều này ----> https://gist.github.com/1155365 –

5

Nếu bạn không thể yêu cầu khách hàng hỗ trợ cookie, có lẽ bạn có thể đặt một số dữ liệu vào LocalStorage và sau đó liên lạc với máy chủ để kết nối với phiên và cấu trúc nó như ứng dụng một trang.

Nó muốn tìm một cái gì đó như thế này:

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 

đang socket web được hỗ trợ? Bạn có thể sử dụng Socket.io để thực hiện việc vận chuyển, điều này sẽ có độ trễ ít hơn nhiều.

Các vấn đề liên quan