JavaScript đặt cookie không hoạt động

Một ngày nọ, đồng nghiệp của tôi báo cáo rằng anh ấy không thể truy cập một trang web nào đó. Sau mỗi lần thử, anh ấy đã được chuyển hướng trở lại trang đăng nhập. Tôi đã duyệt trang web đó và ngạc nhiên là mọi thứ đều hoạt động tốt với tôi

Chúng tôi đã kiểm tra trình duyệt của mình và phát hiện ra rằng cả hai chúng tôi đều đang sử dụng cùng một phiên bản Chrome. Vấn đề xảy ra là trong trường hợp của anh ấy, cookie phiên không được chuyển theo yêu cầu tới…

Cookies là các chuỗi dữ liệu nhỏ, được lưu trữ trực tiếp trong trình duyệt. Chúng được bao gồm trong giao thức HTTP

Theo quy định, máy chủ web đặt cookie với sự trợ giúp của tiêu đề HTTP Set-Cookie phản hồi. Sau đó, trình duyệt thêm chúng vào từng yêu cầu cho cùng một miền, sử dụng tiêu đề Cookie HTTP.
Cookie được sử dụng trong nhiều trường hợp để lưu trữ thông tin và dữ liệu nhạy cảm, phổ biến nhất là xác thực
Trong quá trình đăng nhập, máy chủ sẽ áp dụng Set-Cookie .

  1. Lần tiếp theo nếu yêu cầu được đặt cho cùng một miền, cookie sẽ được trình duyệt gửi qua mạng với sự trợ giúp của tiêu đề Cookie HTTP
  2. Theo cách đó, các máy chủ biết yêu cầu được thực hiện bởi ai

Ngoài ra, bạn có thể sử dụng tài liệu. thuộc tính cookie để truy cập cookie từ trình duyệt

2 tên miền

Set-Cookie: name=value; domain=mydomain.com
1 và
Set-Cookie: name=value; domain=mydomain.com
2 chỉ có thể chia sẻ cookie nếu tên miền được đặt tên rõ ràng trong tiêu đề
Set-Cookie: name=value; domain=mydomain.com
0. Mặt khác, phạm vi của cookie bị giới hạn đối với máy chủ yêu cầu. [Điều này được gọi là "cookie chỉ dành cho máy chủ"

Cookie chỉ lưu trữ trên máy chủ

Nếu

Set-Cookie: name=value; domain=mydomain.com
1 không được chỉ định, cookie chỉ có thể được đọc bởi tên miền chính xác đã đặt cookie. Điều này có thể được nới lỏng bằng cách đặt thuộc tính
Set-Cookie: name=value; domain=mydomain.com
1 khi đặt cookie

Ví dụ: nếu cookie được đặt bởi

Set-Cookie: name=value; domain=mydomain.com
3 và thuộc tính
Set-Cookie: name=value; domain=mydomain.com
1 không được chỉ định, thì cookie sẽ được đặt với tên miền
Set-Cookie: name=value; domain=mydomain.com
3 và cookie sẽ là cookie chỉ dành cho máy chủ lưu trữ

Một vi dụ khac. Nếu cookie được đặt bởi

Set-Cookie: name=value; domain=mydomain.com
3 và thuộc tính
Set-Cookie: name=value; domain=mydomain.com
1 được chỉ định là
Set-Cookie: name=value; domain=mydomain.com
8 [vì vậy cookie cũng sẽ được gửi tới
Set-Cookie: name=value; domain=mydomain.com
9], thì cookie sẽ được đặt với tên miền
Set-Cookie: name=value; domain=mydomain.com
8 [hoặc có thể là
Set-Cookie: name=value; domain=mydomain.com
11 bởi một số trình duyệt sử dụng dấu chấm từ RFC trước đó

Nói một cách đơn giản, cookie Chỉ dành cho Máy chủ có nghĩa là cookie chỉ được trình duyệt xử lý đối với máy chủ đối với cùng một máy chủ/máy chủ đã gửi nó đến trình duyệt lần đầu.
Bạn không muốn gửi cookie chỉ máy chủ này cho các chiến dịch quảng cáo vì cookie này có thể chứa thông tin nhạy cảm.

Chẳng hạn, nếu bạn đã gửi tiêu đề sau từ

Set-Cookie: name=value; domain=mydomain.com
2, thì cookie sẽ không được gửi cho các yêu cầu tới
Set-Cookie: name=value; domain=mydomain.com
1

Set-Cookie: name=value; domain=mydomain.com
2

Tuy nhiên nếu bạn dùng cách sau thì sẽ dùng được trên cả 2 miền

Set-Cookie: name=value; domain=mydomain.com

Cookie này sẽ được gửi cho bất kỳ tên miền phụ nào của tên miền của tôi. com, bao gồm các tên miền phụ lồng nhau như

Set-Cookie: name=value; domain=mydomain.com
14

Trong RFC 2109, miền không có dấu chấm ở đầu có nghĩa là không thể sử dụng miền đó trên miền phụ và chỉ có dấu chấm ở đầu [

Set-Cookie: name=value; domain=mydomain.com
15] mới cho phép miền đó được sử dụng trên nhiều miền phụ [chứ không phải miền cấp cao nhất .
Tuy nhiên, tất cả các trình duyệt hiện đại đều tôn trọng thông số kỹ thuật mới hơn RFC 6265 và sẽ bỏ qua mọi dấu chấm ở đầu, nghĩa là bạn có thể sử dụng cookie trên tên miền phụ cũng như tên miền cấp cao nhất.

Tóm lại, nếu bạn đặt cookie như ví dụ thứ hai ở trên từ

Set-Cookie: name=value; domain=mydomain.com
1, thì
Set-Cookie: name=value; domain=mydomain.com
2 sẽ có thể truy cập cookie đó và ngược lại. Điều này cũng có thể được sử dụng để cho phép
Set-Cookie: name=value; domain=mydomain.com
18 và
Set-Cookie: name=value; domain=mydomain.com
19 chia sẻ cookie

Xem thêm

  • www so với không có www và cookie
  • tập lệnh kiểm tra cookie để dùng thử

Các trang web thường có www. tên miền phụ trỏ đến cùng một nội dung với tên miền chính. Với cookie phiên, khách truy cập của chúng tôi đã truy cập trang web của chúng tôi bằng www. hoặc họ đã truy cập nó mà không có và thực tế là một cookie được tạo cho www. ví dụ. com không thể truy cập từ ví dụ. com sẽ không thành vấn đề. Với cookie của bên thứ nhất, khách truy cập có thể dễ dàng truy cập trang web của chúng tôi lần đầu tiên dưới dạng www. ví dụ. com và lần thứ hai làm ví dụ. com và vì vậy chúng tôi muốn tạo một cookie có thể truy cập được từ cả hai

Tạo Cookie cấp miền trong Javascript

Để làm cho cookie có thể truy cập được từ toàn bộ miền bao gồm bất kỳ miền phụ nào, chúng tôi chỉ cần thêm tham số miền khi đặt cookie như được minh họa trong ví dụ JavaScript này. Tất nhiên, bạn nên thay thế tên miền của riêng bạn chẳng hạn. com [như ví dụ. com là một tên miền được dành riêng để sử dụng trong các ví dụ mà nó đại diện cho bất kỳ tên miền nào bạn đang thực sự sử dụng. ]

Set-Cookie: name=value; domain=mydomain.com
1

Nó liên quan đến việc đặt thuộc tính miền của chuỗi cookie như

Set-Cookie: name=value; domain=mydomain.com
9

Ví dụ: cookie này hiện có thể truy cập được đối với tất cả các tên miền phụ. com thích đăng nhập. ví dụ. com

Cookie cần phải có cả đường dẫn và tên miền được thêm vào để xóa. Thử cái này

Set-Cookie: name=value; domain=mydomain.com
0Làm việc với Cookies trong ReactJS

Khi làm việc với Javascript, bạn có thể có một số cách đơn giản hơn để làm việc với cookie thông qua npm package universal-cookie

Bạn có thể đặt cookie bằng JavaScript không?

Tạo Cookie bằng JavaScript . JavaScript can create, read, and delete cookies with the document. thuộc tính cookie. Với JavaScript, một cookie có thể được tạo như thế này. tài liệu. cookie = "tên người dùng=John Doe"; .

Làm cách nào để đặt đường dẫn cookie trong JavaScript?

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ừ thời điểm 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.

Làm cách nào để đặt thời gian hết hạn cookie trong JavaScript?

// 1 Ngày = 24 Giờ = 24*60*60 = 86400. .
Bằng cách sử dụng tuổi tối đa. Tạo cookie. tài liệu. cookie = "cookieName=cookieValue; max-age=86400; path=/;"; . tài liệu. .
Bằng cách sử dụng hết hạn. Cú pháp tạo cookie một ngày. var hết hạn = [Ngày mới[Ngày. bây giờ[]+ 86400*1000]]. toUTCString[];

Làm cách nào để tìm nạp cookie trong JavaScript?

Chỉ cần gọi tài liệu. cookie để lấy giá trị hiện tại của tất cả các cookie. Sau đó, bạn có thể lưu trữ giá trị này trong một biến để thao tác thêm

Chủ Đề