Sự khác biệt giữa local.test.com
và là .local.test.com
gì? Ảnh chụp màn hình là từ Chrome.
Sự khác biệt giữa local.test.com
và là .local.test.com
gì? Ảnh chụp màn hình là từ Chrome.
Câu trả lời:
local.test.com
sẽ được sử dụng cho miền, trong khi .local.test.com
cũng sẽ được sử dụng cho miền phụ.
local.test.com
sẽ không áp dụng cho x.local.test.com
, nhưng .local.test.com
áp dụng cho cả local.test.com
và cho x.local.test.com
?
Dấu chấm ở đầu có nghĩa là cookie cũng hợp lệ cho các miền phụ; tuy nhiên, các đặc tả HTTP gần đây (RFC 6265) đã thay đổi quy tắc này, vì vậy các trình duyệt hiện đại không nên quan tâm đến dấu chấm ở đầu. Có thể cần dấu chấm bởi trình duyệt cũ đang triển khai RFC 2109 không dùng nữa.
Ví dụ: nếu giá trị của thuộc tính Miền là "example.com", thì tác nhân người dùng sẽ bao gồm cookie trong tiêu đề Cookie khi thực hiện các yêu cầu HTTP đến example.com, www.example.com và www.corp.example. com. (Lưu ý rằng% x2E (".") Đứng đầu, nếu có, sẽ bị bỏ qua mặc dù ký tự đó không được phép, nhưng% x2E (".") Ở cuối, nếu có, sẽ khiến tác nhân người dùng bỏ qua thuộc tính. )
Từ bài viết Hướng dẫn cuối cùng về miền cookie và lý do tại sao tiền tố www giúp trang web của bạn an toàn hơn :
Phần kết luận
Mặc dù các định nghĩa có phần khác nhau, nhưng chúng ta có thể đơn giản hóa nó cho bất kỳ triển khai nào sau đây như:
Các quan sát đáng giá khác:
Khi không có miền nào được đặt trong cookie, cookie chỉ nên khớp với tên máy chủ chính xác của yêu cầu. [LƯU Ý: điều này khác với việc trả về Set-Cookie với miền không có dấu chấm!] Không có miền phụ, không có kết quả khớp một phần. Điều này có nghĩa đơn giản là không bao gồm thuộc tính miền - không hợp lệ để đặt thuộc tính miền trống. Thật không may, Internet Explorer dường như coi đây là tên máy chủ cùng với bất kỳ miền phụ nào .
Khi đặt tên miền trong cookie, lựa chọn an toàn là đặt nó trước dấu chấm, như .erik.io. Cookie sẽ khớp với tất cả các miền phụ.
Đặt miền cookie không có dấu chấm trước, như erik.io, không hợp lệ trong triển khai RFC 2109 và sẽ tạo ra hành vi tương tự như với dấu chấm trước trên các triển khai khác. Không có cách nào để hạn chế cookie đối với một miền cụ thể được thiết lập rõ ràng, mà không có miền phụ được bao gồm.
Trong tất cả các RFC, miền cookie được chỉ định phải khớp với tên máy chủ hiện tại, theo đối sánh bình thường. Đặt cookie cho www.erik.io trong phản hồi từ erik.io là không hợp lệ, vì cookie có miền www.erik.io không khớp với erik.io, cookie trước đây cụ thể hơn.
Trong RFC 6265, các miền được đặt giá trị thấp hơn rõ ràng khi phân tích cú pháp tiêu đề Set-Cookie.
Dấu chấm hàng đầu trong ".local.test.com" chỉ cách chrome xem cookie với bộ "Domain = local.test.com" (hoặc "Domain = .local.test.com", giống nhau).
Định nghĩa Set-Cookie không có "Tên miền = cái gì đó" sẽ xem tên miền (= máy chủ) mà không có dấu chấm ở đầu.
Vì vậy, dấu chấm ở đầu trong chrome không phản ánh liệu dấu chấm ở đầu có được sử dụng từ máy chủ hay không, mà là cookie đó có "Tên miền = cái gì đó" trong định nghĩa của nó từ máy chủ hay không. (Và nếu có, cookie cũng sẽ được gửi đến các miền phụ).
Ít nhất đây là những gì các bài kiểm tra của tôi cho thấy. Chrome sẽ làm cho điều này dễ đọc hơn, chẳng hạn như xem chuỗi chính xác đã xác định cookie và thời điểm nhận được cookie.