Tôi phải thiếu một số điều cơ bản về cookie. Trên localhost, khi tôi đặt cookie ở phía máy chủ và chỉ định tên miền rõ ràng là localhost (hoặc .localhost). cookie dường như không được chấp nhận bởi một số trình duyệt.
Firefox 3.5: Tôi đã kiểm tra yêu cầu HTTP trong Fireorms. Những gì tôi thấy là:
Set-Cookie:
name=value;
domain=localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
hoặc (khi tôi đặt tên miền thành .localhost):
Set-Cookie:
name=value;
domain=.localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
Trong cả hai trường hợp, cookie không được lưu trữ.
IE8: Tôi không sử dụng bất kỳ công cụ bổ sung nào, nhưng cookie dường như cũng không được lưu trữ, vì nó không được gửi lại trong các yêu cầu tiếp theo.
Opera 9.64: Cả localhost và .localhost đều hoạt động , nhưng khi tôi kiểm tra danh sách cookie trong Tùy chọn, tên miền được đặt thành localhost.local mặc dù được liệt kê trong localhost (trong nhóm danh sách).
Safari 4: Cả localhost và .localhost đều hoạt động , nhưng chúng luôn được liệt kê là .localhost trong Tùy chọn. Mặt khác, một cookie không có tên miền rõ ràng, nó được hiển thị dưới dạng localhost (không có dấu chấm).
Vấn đề với localhost là gì? Do số lượng không nhất quán như vậy, phải có một số quy tắc đặc biệt liên quan đến localhost. Ngoài ra, nó không hoàn toàn rõ ràng với tôi tại sao các tên miền phải được thêm tiền tố bởi một dấu chấm? RFC 2109 tuyên bố rõ ràng rằng:
Giá trị cho thuộc tính Miền không chứa dấu chấm nhúng hoặc không bắt đầu bằng dấu chấm.
Tại sao? Tài liệu chỉ ra rằng nó phải làm một cái gì đó với bảo mật. Tôi phải thừa nhận rằng tôi chưa đọc toàn bộ thông số kỹ thuật (có thể thực hiện sau), nhưng nghe có vẻ hơi lạ. Dựa trên điều này, việc thiết lập cookie trên localhost sẽ là không thể.