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 .
- 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
- 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 cookieVí 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
1Set-Cookie: name=value; domain=mydomain.com
2Tuy 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
14Trong 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ẻ cookieXem 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
1Nó 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
9Ví 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 ReactJSKhi 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