Có cách nào, với sự trợ giúp của Javascript, liệt kê tất cả cookie được liên kết với trang hiện tại không? Đó là, nếu tôi không biết tên của các tập tin cookie nhưng muốn lấy tất cả các thông tin mà chúng chứa.Tôi làm cách nào để liệt kê tất cả cookie cho trang hiện tại bằng Javascript?
Trả lời
Bạn có thể liệt kê các tập tin cookie cho tên miền hiện tại:
function listCookies() {
var theCookies = document.cookie.split(';');
var aString = '';
for (var i = 1 ; i <= theCookies.length; i++) {
aString += i + ' ' + theCookies[i-1] + "\n";
}
return aString;
}
Nhưng bạn không thể liệt kê các tập tin cookie cho các tên miền khác cho lý do an ninh
Tôi phải là vụng về trong mô tả của tôi về vấn đề này. Những gì tôi muốn làm là lấy danh sách tất cả các cookie được tạo bởi bất kỳ tài liệu html nào trong cùng một danh mục. Trong tài liệu html, tôi chỉ cần thêm mã sau đây: var x = document.cookie; window.alert (x); ... và tôi có thể thấy tất cả các cookie mà tôi đã tạo. Xin lỗi nếu tôi thể hiện bản thân mình một cách không rõ ràng. Cảm ơn tất cả các câu trả lời nhanh chóng mặc dù. Tôi cũng thích trang này :) – Speldosa
Điều này cũng không hoạt động khi cookie đã được đặt giá trị '' 'httpOnly = true'''. –
Đầu ra Nicer thông qua 'aString + = i + '' + decodeURIComponent (theCookies [i-1]) +" \ n ";' –
Không có. Bạn chỉ có thể đọc thông tin được liên kết với tên miền hiện tại.
Damn :) Ok ... Câu hỏi tiếp theo: 1. Có cách nào để kiểm tra xem một cookie cụ thể có tồn tại không (với một tên nào đó mà bạn biết)? 2. Có loại tài liệu hướng dẫn nào cho JavaScript, ví dụ lớp document.cookie được mô tả chi tiết không? – Speldosa
Tài nguyên tốt: http://www.w3schools.com/JS/js_cookies.asp – tur1ng
Tôi cũng nghĩ vậy. Tuy nhiên, tôi muốn giữ một số thứ tương đương với điều này: http://download.oracle.com/javase/1.4.2/docs/api/overview-summary.html – Speldosa
(Đối với các tên miền, không phải là trang như tur1ng chỉ ra)
No.
Các trình duyệt API duy nhất cung cấp cho bạn để xử lý cookie đang nhận và đặt chúng thông qua các cặp khóa-giá trị. Tất cả các trình duyệt đều xử lý cookie theo tên miền chỉ.
Truy cập tất cả cookie cho miền hiện tại được thực hiện qua document.cookie
.
Điều này không hoạt động nếu bạn đã đặt cookie với httpOnly, được khuyến nghị, vì nó giúp giảm thiểu các hậu quả tiêu cực của một cuộc tấn công XSS. – Flimm
var x = document.cookie;
window.alert(x);
Điều này hiển thị mọi cookie mà trang web hiện tại có quyền truy cập. Ví dụ: nếu bạn đã tạo hai cookie "username = Frankenstein" và "username = Dracula", hai dòng mã này sẽ hiển thị "username = Frankenstein; username = Dracula". Tuy nhiên, thông tin như ngày hết hạn sẽ không được hiển thị.
Điều này không có tác dụng nếu bạn đã đặt cookie bằng 'httpOnly', được khuyến nghị, vì nó giúp giảm bớt hậu quả tiêu cực của một cuộc tấn công XSS. – Flimm
Chức năng này sẽ trả lại tất cả các tập tin cookie như một đối tượng lồng nhau (s):
getDocumentCookies = function() {
var theCookies = document.cookie.split(';'),
cookieObj = {},
tmp, tmpName, tmpVal;
for (var i = 1 ; i <= theCookies.length; i++) {
tmp = theCookies[i-1].split('=');
if (tmp[0] !== undefined && tmp[1] !== undefined) {
tmpName = decodeURIComponent(tmp[0].trim());
tmpVal = decodeURIComponent(tmp[1].trim());
if (tmpName.indexOf('[') > -1 && tmpName.indexOf(']') > -1) {
cookieObj[tmpName.split('[')[0]] = cookieObj[tmpName.split('[')[0]] || {};
cookieObj[tmpName.split('[')[0]][tmpName.split('[')[1].replace(']', '')] = tmpVal;
} else {
cookieObj[tmpName] = tmpVal;
}
}
}
return cookieObj;
};
Nhiều người đã đề cập rằng document.cookie
giúp bạn tất cả các cookie (trừ http-only
người).
Tôi sẽ chỉ thêm đoạn mã để theo kịp thời gian.
document.cookie.split(';').reduce((cookies, cookie) => {
let [ name, value ] = cookie.split('=').map(c => c.trim());
cookies[name] = value;
return cookies;
}, {});
Đoạn mã sẽ trả về đối tượng có tên cookie là khóa có giá trị cookie làm giá trị.
- 1. Làm cách nào để liệt kê tất cả các đăng ký của tôi bằng ClearCase?
- 2. Liệt kê tất cả virtualenv
- 3. Liệt kê tất cả các trang web trong IIS C#
- 4. Làm cách nào để xóa tất cả cookie miền hiện tại trong trang web MVC?
- 5. Liệt kê tất cả người dùng trong LDAP bằng PHP
- 6. Liệt kê tất cả các hàm dựng sẵn trong javascript?
- 7. Làm cách nào để liệt kê tất cả các chuỗi được quản lý bằng WinDBG?
- 8. Tôi làm cách nào để liệt kê tất cả các tiến trình đang chạy trong Windows?
- 9. Groovy Liệt kê tất cả các thuộc tính cho lớp
- 10. Liệt kê tất cả các chỉ mục
- 11. Làm cách nào để liệt kê/liệt kê tất cả các ứng dụng đã cài đặt trong Windows XP?
- 12. Psql liệt kê tất cả các bảng
- 13. Trong grails, làm cách nào để tôi tham khảo tất cả các phiên hiện tại?
- 14. Làm cách nào để liệt kê tất cả các cụm được nạp?
- 15. Làm thế nào để liệt kê tất cả các biến trong ngữ cảnh hiện tại trong gdb?
- 16. Liệt kê tất cả các kho SVN
- 17. Làm cách nào để liệt kê tất cả các hoạt động WCF đang thực thi?
- 18. Tôi có thể liệt kê tất cả các bảng trong cơ sở dữ liệu bằng Squirrel SQL bằng cách nào?
- 19. Cách liệt kê tất cả các ngày giữa hai ngày
- 20. Làm cách nào để liệt kê tất cả các miếng đệm trong etherpad-lite
- 21. Làm cách nào để liệt kê tất cả các yanks trong các emacs?
- 22. Làm cách nào để liệt kê tất cả các bảng trong lược đồ trong Oracle SQL?
- 23. Cách liệt kê tất cả các thuộc tính của lớp
- 24. Cách liệt kê các tệp trong thư mục hiện tại?
- 25. Liệt kê tất cả thông tin về phiên
- 26. Tại sao document.cookie không hiển thị tất cả cookie cho trang web?
- 27. Làm thế nào để viết một liệt kê của tất cả các chức năng tính toán?
- 28. Liệt kê tất cả các tháng sử dụng oracle sql
- 29. Applescript - liệt kê tất cả các ứng dụng đang chạy
- 30. Liệt kê tất cả các gói con của gói
Vui lòng làm rõ nếu theo "trang nhất định", bạn có nghĩa là "trang mà người dùng hiện đang truy cập". Câu trả lời của DixonD được tìm thấy trên các cookie hiện tại. Tất cả các tên miền khác đều không phù hợp vì lý do bảo mật. –
Có. Tôi đang nói về trang mà người dùng hiện đang truy cập. – Speldosa
OK. Tôi đã chỉnh sửa tiêu đề và câu hỏi để phản ánh điều đó. Câu trả lời của DixonD là thích hợp ở đây. –