2009-06-19 28 views
8

Tôi có máy chủ dev trong văn phòng của chúng tôi nằm phía sau tường lửa. Tên máy chủ là franklin. Chúng tôi đặt tên cho tất cả các máy chủ của chúng tôi sau khi các nhà khoa học hoặc nhà phát minh.Cookie trên miền mạng nội bộ

Khi tôi đặt một cookie:

Set-Cookie: user=kenny; expires=1245424860.11; Path=/; domain=franklin 

Cookie không được thiết lập. Tôi đã thử những điều sau đây mà không có may mắn.

.franklin 
.franklin.local 
franklin.local 
.franklin.localdomain 
franklin.localdomain 

Tôi có phải đặt tên máy chủ thành một thứ gì đó khác hoặc tôi có thể đặt cookie này thông qua một số phép thuật mà tôi chưa biết?

+0

kỳ quặc đủ Tôi đã bỏ miền = franklin và đặt cookie. Sử dụng thanh công cụ phát triển web của firefox, nó cho biết tên miền là franklin. Không chắc chuyện gì đang xảy ra. –

Trả lời

7

RFC 2109 nói:

Để ngăn chặn bảo mật hoặc tính riêng tư vi phạm có thể, một user agent từ chối một cookie (sẽ không lưu trữ thông tin của nó) nếu một trong các sau là đúng:

  • Giá trị cho thuộc tính Miền không chứa dấu chấm được nhúng hoặc không bắt đầu bằng dấu chấm.
  • Giá trị cho máy chủ yêu cầu không khớp với tên miền thuộc tính.

Và cũng:

miền Defaults để yêu cầu-host.

Nếu máy của bạn là franklin:

  • Cookies với domain=.franklin sẽ bị từ chối, bởi vì nó không có dấu chấm nhúng.
  • Cookie với domain=.franklin.local sẽ bị từ chối vì không khớp với tên máy chủ lưu trữ thực của máy chủ của bạn.

Giải pháp là để đổi tên hostname của bạn để franklin.local hoặc franklin.<tld> và thiết lập các thuộc tính domain cookie phù hợp (domain=.franklin.<tld>). Ngoài ra (như bạn đã phát hiện ra), không chỉ định domain và cho phép tác nhân người dùng dự phòng tới máy chủ yêu cầu.

+1

Giải thích tuyệt vời! Cảm ơn molf! –

0

Bạn có đặt cookie từ đúng tên miền không? Bạn nên truy cập trang web trên http://franklin/ nếu không nó sẽ không hoạt động (xem: cùng chính sách gốc).

+0

Tôi có thể truy cập nó dưới dạng http: // franklin/ –

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