2010-06-02 65 views
28

Sử dụng Javascript Tôi muốn nhận giá trị domain cho một cookie cụ thể.Cách lấy giá trị tên miền cho cookie trong Javascript?

Điều này có khả thi không? Nếu vậy, làm thế nào?

Để làm rõ: Tôi không tìm kiếm giá trị của cookie. Tôi đang ở trên "subdomain.domain.com" và tôi cần xóa một cookie có tên được biết nhưng giá trị tên miền của nó giống như ".domain.com". Tóm lại: Tôi muốn nhận được giá trị của ".domain.com".

+1

Cách duy nhất tôi biết để nhận thuộc tính cookie (đường dẫn, miền, hết hạn, bảo mật) là để gắn chúng vào giá trị khi bạn tạo hoặc sửa đổi cookie hoặc giá trị của nó. – kennebec

Trả lời

35

Xin lỗi, tất cả những gì bạn nhận được là những gì bạn thấy trong document.cookie. Siêu dữ liệu cookie như path, domainexpires không hiển thị với mã trang web (không phải JavaScript và phía máy chủ).

Để đọc một cookie đang bị che bởi một cookie có chi tiết cụ thể hơn domain hoặc path, điều duy nhất bạn có thể làm là tải trang mà cookie cụ thể hơn nằm ngoài phạm vi và đọc nó từ đó.

Nếu, như bạn nói, bạn chỉ cần loại bỏ một cookie, những gì bạn có thể làm là cố gắng loại bỏ các cookie ở mọi cấp độ có thể xảy ra đặc hiệu, Eg .:

document.cookie= 'foo=;domain=sub.domain.example.com;expires=Sat, 01-Jan-2000 00:00:00 GMT'; 
    document.cookie= 'foo=;domain=domain.example.com;expires=Sat, 01-Jan-2000 00:00:00 GMT'; 
    document.cookie= 'foo=;domain=example.com;expires=Sat, 01-Jan-2000 00:00:00 GMT'; 

và tương tự với biến số path. Bạn có thể đặt điều này trong một vòng lặp lồng nhau cho mỗi đường dẫn và phần tên miền, chia tách trên . cho miền và / cho đường dẫn.

+3

Vì vậy, về cơ bản bạn đề nghị thảm ném bom. Tôi không thể nhìn thấy một giải pháp khác. :) – Wabbitseason

+0

Vâng, đó là một cách hay để mô tả nó! – bobince

+0

Tiện ích "Xem thông tin cookie" của Nhà phát triển web Firefox làm điều đó như thế nào? Rõ ràng, thông tin tên miền là ở đâu đó. – TARKUS

2

Bạn chỉ có thể truy cập cookie từ cùng một tên miền (bao gồm tên miền phụ). Rõ ràng làm khác sẽ là một mối quan tâm an ninh.

+1

Tôi nghĩ điều đó không đúng. tên miền phụ có thể đặt cookie cho *. tên miền chính, như tôi đã hiểu: https://serverfault.com/questions/153409/can-subdomain-example-com-set-a-cookie-that-can-be-read-by-example-com – hwjp

+1

Đúng: một trong những thứ cookie có thể làm được rằng localStorage không thể: bạn có thể đặt nó trên tên miền chính. Lập trình để tìm ra những gì "toplevel" tên miền mà bạn có thể đặt nó trên là có thể phức tạp mặc dù: bạn có thể thiết lập một cookie trên amazon.com nhưng không co.uk như đồng nó là một SLD đặc biệt. Thay vào đó, bạn phải đặt nó trên amazon.co.uk. Vì vậy, nó không đơn giản như "chỉ hai phân đoạn cuối cùng". – Dtipson

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