👉👉Nếu bạn đang xem tại https. //github. com/js-cookie/js-cookie, bạn đang đọc tài liệu về nhánh chính. Xem tài liệu cho bản phát hành mới nhất. 👈👈
Cài đặt
NPM
JavaScript Cookie hỗ trợ npm dưới tên
5
$ npm i js-cookie
Gói npm có trường
6 trỏ đến biến thể mô-đun ES của thư viện, chủ yếu để cung cấp hỗ trợ cho các gói nhận biết mô-đun ES, trong khi trường
7 của nó trỏ đến mô-đun UMD để tương thích ngược hoàn toàn
Tải trực tiếp
Bắt đầu với các bản phát hành phiên bản 3 được phân phối với hai biến thể của thư viện này, mô-đun ES cũng như mô-đun UMD
Lưu ý các phần mở rộng khác nhau.
8 biểu thị mô-đun ES, trong khi
9 là mô-đun UMD
Ví dụ về cách tải mô-đun ES trong trình duyệt
import Cookies from '/path/to/js.cookie.mjs' Cookies.set['foo', 'bar']
Không phải tất cả các trình duyệt đều hỗ trợ các mô-đun ES nguyên bản. Vì lý do này, gói/bản phát hành npm cung cấp cả biến thể mô-đun ES và UMD và bạn có thể muốn đưa mô-đun ES cùng với dự phòng UMD vào tài khoản này
Ở đây, chúng tôi đang tải tập lệnh nomodule theo kiểu hoãn lại, vì các mô-đun ES được hoãn lại theo mặc định. Điều này có thể không thực sự cần thiết tùy thuộc vào cách bạn đang sử dụng thư viện
CDN
Ngoài ra, hãy đưa nó qua jsDelivr CDN
Mô-đun ES
Ví dụ về cách nhập mô-đun ES từ mô-đun khác
________số 8
Sử dụng cơ bản
Tạo một cookie, hợp lệ trên toàn bộ trang web
Cookies.set['name', 'value']
Tạo cookie hết hạn sau 7 ngày kể từ bây giờ, hợp lệ trên toàn bộ trang web
$ npm i js-cookie
0Tạo một cookie hết hạn, hợp lệ với đường dẫn của trang hiện tại
$ npm i js-cookie
1Đọc cookie
$ npm i js-cookie
2Đọc tất cả các cookie có thể nhìn thấy
$ npm i js-cookie
3Ghi chú. Không thể đọc một cookie cụ thể bằng cách chuyển một trong các thuộc tính cookie [có thể hoặc không được sử dụng khi viết cookie được đề cập]
$ npm i js-cookie
4Cookie có tên
import Cookies from 'js-cookie' Cookies.set['foo', 'bar']0 sẽ chỉ khả dụng trên
import Cookies from 'js-cookie' Cookies.set['foo', 'bar']1 nếu nó có thể nhìn thấy từ nơi mã được gọi;
Xóa cookie
import Cookies from '/path/to/js.cookie.mjs' Cookies.set['foo', 'bar']0
Xóa cookie hợp lệ với đường dẫn của trang hiện tại
import Cookies from '/path/to/js.cookie.mjs' Cookies.set['foo', 'bar']1
QUAN TRỌNG. Khi xóa cookie và bạn không dựa vào các thuộc tính mặc định, bạn phải chuyển chính xác các thuộc tính miền và đường dẫn đã được sử dụng để đặt cookie
import Cookies from '/path/to/js.cookie.mjs' Cookies.set['foo', 'bar']2
Ghi chú. Xóa cookie không tồn tại sẽ không làm tăng bất kỳ ngoại lệ nào cũng như không trả lại bất kỳ giá trị nào
Xung đột không gian tên
Nếu có nguy cơ xung đột với không gian tên
import Cookies from 'js-cookie' Cookies.set['foo', 'bar']2, phương thức
import Cookies from 'js-cookie' Cookies.set['foo', 'bar']3 sẽ cho phép bạn xác định một không gian tên mới và giữ nguyên không gian ban đầu. Điều này đặc biệt hữu ích khi chạy tập lệnh trên các trang web của bên thứ ba e. g. như một phần của widget hoặc SDK
import Cookies from '/path/to/js.cookie.mjs' Cookies.set['foo', 'bar']3
Ghi chú. Phương pháp
import Cookies from 'js-cookie' Cookies.set['foo', 'bar']4 không cần thiết khi sử dụng AMD hoặc CommonJS, do đó nó không được hiển thị trong các môi trường đó
mã hóa
Dự án này tuân thủ RFC 6265. Tất cả các ký tự đặc biệt không được phép trong tên cookie hoặc giá trị cookie được mã hóa bằng UTF-8 Hex tương đương của từng ký tự bằng cách sử dụng mã hóa phần trăm.
Ký tự duy nhất trong tên cookie hoặc giá trị cookie được cho phép và vẫn được mã hóa là ký tự phần trăm
import Cookies from 'js-cookie' Cookies.set['foo', 'bar']5, ký tự này được thoát để diễn giải đầu vào phần trăm dưới dạng chữ.
Xin lưu ý rằng chiến lược mã hóa/giải mã mặc định chỉ có thể tương tác giữa các cookie được đọc/ghi bởi js-cookie. Để ghi đè chiến lược mã hóa/giải mã mặc định, bạn cần sử dụng trình chuyển đổi.
Ghi chú. Theo RFC 6265, cookie của bạn có thể bị xóa nếu chúng quá lớn hoặc có quá nhiều cookie trong cùng một miền, thông tin chi tiết tại đây
Thuộc tính cookie
Giá trị mặc định của thuộc tính cookie có thể được đặt trên toàn cầu bằng cách tạo một phiên bản của api qua
import Cookies from 'js-cookie' Cookies.set['foo', 'bar']6 hoặc riêng lẻ cho mỗi lệnh gọi tới
import Cookies from 'js-cookie' Cookies.set['foo', 'bar']7 bằng cách chuyển một đối tượng đơn giản làm đối số cuối cùng. Thuộc tính mỗi cuộc gọi sẽ ghi đè thuộc tính mặc định
hết hạn
Xác định thời điểm cookie sẽ bị xóa. Giá trị phải là một
import Cookies from 'js-cookie' Cookies.set['foo', 'bar']8 sẽ được hiểu là số ngày kể từ thời điểm tạo hoặc một phiên bản
import Cookies from 'js-cookie' Cookies.set['foo', 'bar']9. Nếu bị bỏ qua, cookie sẽ trở thành cookie phiên
Để tạo cookie hết hạn sau chưa đầy một ngày, bạn có thể kiểm tra Câu hỏi thường gặp trên Wiki
Mặc định. Cookie bị xóa khi người dùng đóng trình duyệt
ví dụ
import Cookies from '/path/to/js.cookie.mjs' Cookies.set['foo', 'bar']4
đường dẫn
Một
Cookies.set['name', 'value']0 cho biết đường dẫn hiển thị cookie
Mặc định.
Cookies.set['name', 'value']1
ví dụ
import Cookies from '/path/to/js.cookie.mjs' Cookies.set['foo', 'bar']5
Lưu ý về Internet Explorer
Do một lỗi khó hiểu trong quá trình triển khai WinINET InternetGetCookie cơ bản, tài liệu của IE. cookie sẽ không trả về cookie nếu nó được đặt với thuộc tính đường dẫn chứa tên tệp
[Từ Nội bộ Cookie của Internet Explorer [Câu hỏi thường gặp]]
Điều này có nghĩa là người ta không thể đặt đường dẫn bằng cách sử dụng
Cookies.set['name', 'value']2 trong trường hợp tên đường dẫn đó chứa tên tệp như vậy.
Cookies.set['name', 'value']3 [hoặc ít nhất, cookie đó không thể được đọc chính xác]
Trên thực tế, bạn không bao giờ nên cho phép đầu vào không đáng tin cậy đặt các thuộc tính cookie, nếu không bạn có thể bị tấn công XSS
miền
Một
Cookies.set['name', 'value']0 cho biết một miền hợp lệ nơi cookie sẽ hiển thị. Cookie cũng sẽ hiển thị với tất cả các tên miền phụ
Mặc định. Cookie chỉ hiển thị với tên miền hoặc tên miền phụ của trang nơi cookie được tạo, ngoại trừ Internet Explorer [xem bên dưới]
ví dụ
Giả sử một cookie đang được tạo trên
Cookies.set['name', 'value']5
import Cookies from '/path/to/js.cookie.mjs' Cookies.set['foo', 'bar']6
Lưu ý về hành vi mặc định của Internet Explorer
Q3. Nếu tôi không chỉ định thuộc tính DOMAIN [cho] một cookie, thì IE vẫn gửi nó tới tất cả các miền con lồng nhau?
A. Có, ví dụ về bộ cookie. com sẽ được gửi đến sub2. phụ1. thí dụ. com.
Internet Explorer khác với các trình duyệt khác ở điểm này.
[Từ Nội bộ Cookie của Internet Explorer [Câu hỏi thường gặp]]
Điều này có nghĩa là nếu bạn bỏ qua thuộc tính
Cookies.set['name', 'value']6, nó sẽ hiển thị cho tên miền phụ trong IE
chắc chắn
Cookies.set['name', 'value']7 hoặc
Cookies.set['name', 'value']8, cho biết liệu việc truyền cookie có yêu cầu giao thức bảo mật [https] hay không
Mặc định. Không yêu cầu giao thức an toàn
ví dụ
import Cookies from '/path/to/js.cookie.mjs' Cookies.set['foo', 'bar']7
cùngSite
Một
Cookies.set['name', 'value']0, cho phép kiểm soát xem trình duyệt có gửi cookie cùng với các yêu cầu trên nhiều trang hay không
Mặc định. không được thiết lập
Lưu ý rằng các trình duyệt gần đây hơn đang biến "Lax" thành giá trị mặc định ngay cả khi không chỉ định bất kỳ điều gì ở đây
ví dụ
import Cookies from '/path/to/js.cookie.mjs' Cookies.set['foo', 'bar']8
Thiết lập mặc định
import Cookies from '/path/to/js.cookie.mjs' Cookies.set['foo', 'bar']9
bộ chuyển đổi
Đọc
Tạo một phiên bản mới của api sẽ ghi đè triển khai giải mã mặc định. Tất cả các phương thức get dựa vào giải mã phù hợp để hoạt động, chẳng hạn như
$ npm i js-cookie
00 và $ npm i js-cookie
01, sẽ chạy trình chuyển đổi đã cho cho mỗi cookie. Giá trị được trả về sẽ được sử dụng làm giá trị cookieVí dụ từ việc đọc một trong các cookie chỉ có thể được giải mã bằng hàm
$ npm i js-cookie
020
Viết
Tạo một phiên bản mới của api ghi đè triển khai mã hóa mặc định
1
Khai báo TypeScript
2
Tích hợp phía máy chủ
Kiểm tra tài liệu máy chủ
Đóng góp
Kiểm tra Nguyên tắc đóng góp
Bảo vệ
Đối với các báo cáo lỗ hổng, hãy gửi e-mail tới
$ npm i js-cookie
03phát hành
Chúng tôi đang sử dụng release-it để phát hành tự động
Bắt đầu chạy khô để xem điều gì sẽ xảy ra
3
Thực hiện một bản phát hành thực sự [xuất bản cả lên npm cũng như tạo một bản phát hành mới trên GitHub]
4
Bản phát hành GitHub được tạo dưới dạng bản nháp và cần được xuất bản thủ công. [Điều này là để chúng tôi có thể tạo ghi chú phát hành phù hợp trước khi xuất bản. ]