Đặt cookie thời gian JavaScript

Tiêu đề phản hồi HTTP

Set-Cookie: sessionId=38afes7a8
9 được sử dụng để gửi cookie từ máy chủ đến tác nhân người dùng, để tác nhân người dùng có thể gửi lại cho máy chủ sau. Để gửi nhiều cookie, nhiều tiêu đề
Set-Cookie: sessionId=38afes7a8
9 phải được gửi trong cùng một phản hồi

Cảnh báo. Các trình duyệt chặn mã JavaScript giao diện người dùng truy cập tiêu đề

Set-Cookie: sessionId=38afes7a8
9, theo yêu cầu của thông số Tìm nạp, xác định
Set-Cookie: sessionId=38afes7a8
9 là tên tiêu đề phản hồi bị cấm phải được lọc ra khỏi bất kỳ phản hồi nào tiếp xúc với mã giao diện người dùng

Để biết thêm thông tin, hãy xem hướng dẫn về Sử dụng cookie HTTP

Loại tiêu đề Tiêu đề phản hồiTên tiêu đề bị cấmnoTên tiêu đề phản hồi bị cấmcó

cú pháp

Set-Cookie: =
Set-Cookie: =; Expires=
Set-Cookie: =; Max-Age=
Set-Cookie: =; Domain=
Set-Cookie: =; Path=
Set-Cookie: =; Secure
Set-Cookie: =; HttpOnly

Set-Cookie: =; SameSite=Strict
Set-Cookie: =; SameSite=Lax
Set-Cookie: =; SameSite=None; Secure

// Multiple attributes are also possible, for example:
Set-Cookie: =; Domain=; Secure; HttpOnly

Thuộc tính

Set-Cookie: sessionId=38afes7a8
1

Xác định tên cookie và giá trị của nó. Định nghĩa cookie bắt đầu bằng một cặp tên-giá trị

Một

Set-Cookie: sessionId=38afes7a8
2 có thể chứa bất kỳ ký tự US-ASCII nào ngoại trừ. ký tự điều khiển, dấu cách hoặc tab. Nó cũng không được chứa các ký tự phân cách như sau.
Set-Cookie: sessionId=38afes7a8
3

Một

Set-Cookie: sessionId=38afes7a8
4 có thể tùy chọn được gói trong dấu ngoặc kép và bao gồm bất kỳ ký tự US-ASCII nào ngoại trừ ký tự điều khiển, Khoảng trắng, dấu ngoặc kép, dấu phẩy, dấu chấm phẩy và dấu gạch chéo ngược

mã hóa. Nhiều triển khai thực hiện mã hóa URL trên các giá trị cookie. Tuy nhiên, điều này không bắt buộc bởi đặc tả RFC. Mã hóa URL giúp đáp ứng các yêu cầu về ký tự được phép cho

Set-Cookie: sessionId=38afes7a8
4

Ghi chú. Một số

Set-Cookie: sessionId=38afes7a8
2 có ngữ nghĩa cụ thể

tiền tố

Set-Cookie: sessionId=38afes7a8
7. Các cookie có tên bắt đầu bằng
Set-Cookie: sessionId=38afes7a8
7 (dấu gạch ngang là một phần của tiền tố) phải được đặt bằng cờ
Set-Cookie: sessionId=38afes7a8
9 từ một trang bảo mật (HTTPS)

tiền tố

Set-Cookie: sessionId=38afes7a8
00. Các cookie có tên bắt đầu bằng
Set-Cookie: sessionId=38afes7a8
00 phải được đặt bằng cờ
Set-Cookie: sessionId=38afes7a8
9, phải từ một trang bảo mật (HTTPS), không được chỉ định tên miền (và do đó, không được gửi đến tên miền phụ) và đường dẫn phải là
Set-Cookie: sessionId=38afes7a8
03

Set-Cookie: sessionId=38afes7a8
04 Tùy chọn

Cho biết thời gian tồn tại tối đa của cookie dưới dạng dấu thời gian ngày HTTP. Xem

Set-Cookie: sessionId=38afes7a8
05 để biết định dạng bắt buộc

Nếu không được chỉ định, cookie sẽ trở thành cookie phiên. Một phiên kết thúc khi máy khách tắt, sau đó cookie phiên sẽ bị xóa

Cảnh báo. Nhiều trình duyệt web có tính năng khôi phục phiên sẽ lưu tất cả các tab và khôi phục chúng vào lần sử dụng trình duyệt tiếp theo. Cookie phiên cũng sẽ được khôi phục, như thể trình duyệt chưa bao giờ bị đóng

Khi một ngày

Set-Cookie: sessionId=38afes7a8
06 được đặt, thời hạn liên quan đến máy khách mà cookie đang được đặt, không phải máy chủ

Set-Cookie: sessionId=38afes7a8
07 Tùy chọn

Cho biết số giây cho đến khi cookie hết hạn. Số 0 hoặc số âm sẽ hết hạn cookie ngay lập tức. Nếu cả

Set-Cookie: sessionId=38afes7a8
06 và
Set-Cookie: sessionId=38afes7a8
09 đều được đặt, thì
Set-Cookie: sessionId=38afes7a8
09 sẽ được ưu tiên

Set-Cookie: sessionId=38afes7a8
11 Tùy chọn

Xác định máy chủ mà cookie sẽ được gửi đến

Nếu bị bỏ qua, thuộc tính này sẽ mặc định là máy chủ lưu trữ của URL tài liệu hiện tại, không bao gồm tên miền phụ

Trái ngược với thông số kỹ thuật trước đó, các dấu chấm hàng đầu trong tên miền (

Set-Cookie: sessionId=38afes7a8
12) bị bỏ qua

Nhiều giá trị máy chủ lưu trữ/miền không được phép nhưng nếu một miền được chỉ định thì các miền con luôn được bao gồm

Set-Cookie: sessionId=38afes7a8
13 Tùy chọn

Cho biết đường dẫn phải tồn tại trong URL được yêu cầu để trình duyệt gửi tiêu đề

Set-Cookie: sessionId=38afes7a8
14

Ký tự gạch chéo lên (

Set-Cookie: sessionId=38afes7a8
03) được hiểu là dấu phân cách thư mục và các thư mục con cũng được so khớp. Ví dụ: đối với
Set-Cookie: sessionId=38afes7a8
16,

  • các đường dẫn yêu cầu
    Set-Cookie: sessionId=38afes7a8
    
    17,
    Set-Cookie: sessionId=38afes7a8
    
    18,
    Set-Cookie: sessionId=38afes7a8
    
    19 và
    Set-Cookie: sessionId=38afes7a8
    
    00 sẽ khớp với nhau
  • đường dẫn yêu cầu
    Set-Cookie: sessionId=38afes7a8
    
    03,
    Set-Cookie: sessionId=38afes7a8
    
    02,
    Set-Cookie: sessionId=38afes7a8
    
    03 sẽ không khớp
Set-Cookie: sessionId=38afes7a8
04 Tùy chọn

Cho biết rằng cookie chỉ được gửi đến máy chủ khi có yêu cầu với lược đồ

Set-Cookie: sessionId=38afes7a8
05 (ngoại trừ trên máy chủ cục bộ) và do đó, có khả năng chống lại các cuộc tấn công trung gian cao hơn

Ghi chú. Đừng cho rằng

Set-Cookie: sessionId=38afes7a8
04 ngăn chặn tất cả quyền truy cập vào thông tin nhạy cảm trong cookie (khóa phiên, chi tiết đăng nhập, v.v. ). Các cookie có thuộc tính này vẫn có thể được đọc/sửa đổi bằng quyền truy cập vào đĩa cứng của máy khách hoặc từ JavaScript nếu thuộc tính cookie
Set-Cookie: sessionId=38afes7a8
07 không được đặt

Các trang web không an toàn (

Set-Cookie: sessionId=38afes7a8
08) không thể đặt cookie có thuộc tính
Set-Cookie: sessionId=38afes7a8
04 (kể từ Chrome 52 và Firefox 52). Đối với Firefox, yêu cầu
Set-Cookie: sessionId=38afes7a8
05 bị bỏ qua khi thuộc tính
Set-Cookie: sessionId=38afes7a8
04 được đặt bởi localhost (kể từ Firefox 75)

Set-Cookie: sessionId=38afes7a8
07 Tùy chọn

Cấm JavaScript truy cập cookie, ví dụ: thông qua thuộc tính

Set-Cookie: sessionId=38afes7a8
33. Lưu ý rằng một cookie đã được tạo bằng
Set-Cookie: sessionId=38afes7a8
07 sẽ vẫn được gửi cùng với các yêu cầu do JavaScript khởi tạo, chẳng hạn như khi gọi
Set-Cookie: sessionId=38afes7a8
35 hoặc
Set-Cookie: sessionId=38afes7a8
36. Điều này giảm thiểu các cuộc tấn công chống lại cross-site scripting (XSS)

Set-Cookie: sessionId=38afes7a8
37 Tùy chọn

Kiểm soát việc cookie có được gửi cùng với các yêu cầu trên nhiều trang hay không, cung cấp một số biện pháp bảo vệ chống lại các cuộc tấn công giả mạo yêu cầu trên nhiều trang (CSRF)

Các giá trị thuộc tính có thể là

Set-Cookie: sessionId=38afes7a8
38

có nghĩa là trình duyệt chỉ gửi cookie cho các yêu cầu cùng trang, nghĩa là các yêu cầu bắt nguồn từ cùng một trang đã đặt cookie. Nếu một yêu cầu bắt nguồn từ một miền hoặc lược đồ khác (ngay cả với cùng một miền), thì sẽ không có cookie nào có thuộc tính

Set-Cookie: sessionId=38afes7a8
39 được gửi

Set-Cookie: sessionId=38afes7a8
00

có nghĩa là cookie không được gửi theo yêu cầu giữa các trang, chẳng hạn như yêu cầu tải hình ảnh hoặc khung, nhưng được gửi khi người dùng điều hướng đến trang gốc từ một trang bên ngoài (ví dụ: khi theo liên kết). Đây là hành vi mặc định nếu thuộc tính

Set-Cookie: sessionId=38afes7a8
01 không được chỉ định

Set-Cookie: sessionId=38afes7a8
02

có nghĩa là trình duyệt gửi cookie với cả yêu cầu trên nhiều trang và cùng trang. Thuộc tính

Set-Cookie: sessionId=38afes7a8
04 cũng phải được đặt khi đặt giá trị này, như vậy là
Set-Cookie: sessionId=38afes7a8
04

Ghi chú. Các tiêu chuẩn liên quan đến SameSite Cookies đã thay đổi gần đây, sao cho

  1. Hành vi gửi cookie nếu
    Set-Cookie: sessionId=38afes7a8
    
    01 không được chỉ định là
    Set-Cookie: sessionId=38afes7a8
    
    06. Trước đây, cookie được gửi cho tất cả các yêu cầu theo mặc định
  2. Các cookie có
    Set-Cookie: sessionId=38afes7a8
    
    07 hiện cũng phải chỉ định thuộc tính
    Set-Cookie: sessionId=38afes7a8
    
    04 (nói cách khác, chúng yêu cầu ngữ cảnh an toàn)
  3. Các cookie từ cùng một tên miền không còn được coi là từ cùng một trang nếu được gửi bằng một sơ đồ khác (
    Set-Cookie: sessionId=38afes7a8
    
    08 hoặc
    Set-Cookie: sessionId=38afes7a8
    
    05)

Xem bảng Tương thích trình duyệt để biết thông tin về cách triển khai trình duyệt cụ thể (các hàng. "______501. Mặc định là

Set-Cookie: sessionId=38afes7a8
00", "______501. Yêu cầu ngữ cảnh an toàn" và "
Set-Cookie: sessionId=38afes7a8
01. nhận biết sơ đồ URL ("sơ đồ")")

ví dụ

Cookie phiên bị xóa khi máy khách tắt. Cookie là cookie phiên nếu chúng không chỉ định thuộc tính

Set-Cookie: sessionId=38afes7a8
06 hoặc
Set-Cookie: sessionId=38afes7a8
09

Set-Cookie: sessionId=38afes7a8

Cookie vĩnh viễn bị xóa vào một ngày cụ thể (

Set-Cookie: sessionId=38afes7a8
06) hoặc sau một khoảng thời gian cụ thể (
Set-Cookie: sessionId=38afes7a8
09) chứ không phải khi khách hàng đóng cửa

Set-Cookie: sessionId=38afes7a8
0

Set-Cookie: sessionId=38afes7a8
1

miền không hợp lệ

Cookie cho miền không bao gồm máy chủ đã đặt nó sẽ bị tác nhân người dùng từ chối

Cookie sau sẽ bị từ chối nếu được đặt bởi máy chủ được lưu trữ trên

Set-Cookie: sessionId=38afes7a8
99

Set-Cookie: sessionId=38afes7a8
0

Cookie cho tên miền phụ của tên miền phục vụ sẽ bị từ chối

Cookie sau sẽ bị từ chối nếu được đặt bởi máy chủ được lưu trữ trên

Set-Cookie: sessionId=38afes7a8
90

Set-Cookie: sessionId=38afes7a8
3

Tên cookie có tiền tố là

Set-Cookie: sessionId=38afes7a8
7 hoặc
Set-Cookie: sessionId=38afes7a8
00 chỉ có thể được sử dụng nếu chúng được đặt bằng thuộc tính
Set-Cookie: sessionId=38afes7a8
9 từ nguồn gốc an toàn (HTTPS)

Ngoài ra, các cookie có tiền tố

Set-Cookie: sessionId=38afes7a8
00 phải có đường dẫn là
Set-Cookie: sessionId=38afes7a8
03 (có nghĩa là bất kỳ đường dẫn nào tại máy chủ) và không được có thuộc tính
Set-Cookie: sessionId=38afes7a8
96

Cảnh báo. Đối với những khách hàng không triển khai tiền tố cookie, bạn không thể tin tưởng vào những đảm bảo bổ sung này và cookie có tiền tố sẽ luôn được chấp nhận

Chỉ cần đặt thông số hết hạn thành ngày cũ . tài liệu. cookie = "tên người dùng=; hết hạn=Thứ năm, ngày 01 tháng 1 năm 1970 00. 00. 00 UTC; .
Bạn có thể viết cái này ngắn gọn hơn. var now = new Date(); . setTime(bây giờ. getTime() + 1 * 3600 * 1000); tài liệu.
cookie = cName + "=" + cValue + "; " + hết hạn + "; path=/"; . Chức năng này sẽ tạo một cookie có tên là “tên người dùng”, giá trị “Max Brown” với ngày hết hạn là 30 ngày kể từ khi được tạo. // Apply setCookie setCookie('username', username, 30); This code defines a function, setCookie(). This function will create a cookie with the name “username”, value “Max Brown” with an expiration date of 30 days from the time it was created.
Cookie có thể hết hạn. Cookie không có ngày hết hạn được chỉ định sẽ hết hạn khi đóng trình duyệt. Chúng thường được gọi là cookie phiên vì chúng bị xóa sau khi phiên trình duyệt kết thúc (khi trình duyệt bị đóng). Các cookie có ngày hết hạn trong quá khứ sẽ bị xóa khỏi trình duyệt