Một cách phổ biến để kiểm tra hỗ trợ cookie là thông qua chuyển hướng.
Bạn chỉ nên thực hiện việc này khi người dùng đang cố gắng làm điều gì đó bắt đầu phiên, chẳng hạn như đăng nhập hoặc thêm thứ gì đó vào giỏ hàng của họ. Nếu không, tùy thuộc vào cách xử lý, bạn có thể chặn quyền truy cập vào toàn bộ trang web của mình đối với những người dùng - hoặc bot - không hỗ trợ cookie.
Đầu tiên, máy chủ kiểm tra dữ liệu đăng nhập như bình thường - nếu dữ liệu đăng nhập sai, người dùng sẽ nhận được phản hồi đó như bình thường. Nếu đúng, thì máy chủ ngay lập tức phản hồi bằng một cookie và chuyển hướng đến một trang được thiết kế để kiểm tra cookie đó - có thể chỉ là cùng một URL nhưng với một số cờ được thêm vào chuỗi truy vấn. Nếu trang thứ hai đó không nhận được cookie, thì người dùng sẽ nhận được thông báo rằng họ không thể đăng nhập vì cookie bị tắt trên trình duyệt của họ.
Nếu bạn đang làm theo mẫu Post-Redirect-Get cho biểu mẫu đăng nhập của mình, thì cài đặt và kiểm tra cookie này không thêm bất kỳ yêu cầu bổ sung nào - cookie có thể được đặt trong quá trình chuyển hướng hiện tại và được kiểm tra bởi đích tải sau khi chuyển hướng.
Bây giờ là lý do tại sao tôi chỉ thực hiện kiểm tra cookie sau một hành động do người dùng thực hiện khác với mỗi lần tải trang. Tôi đã thấy các trang web thực hiện kiểm tra cookie trên từng trang đơn lẻ, không nhận ra rằng điều này sẽ ảnh hưởng đến những thứ như các công cụ tìm kiếm đang cố gắng thu thập dữ liệu trang web. Nghĩa là, nếu người dùng đã bật cookie, thì cookie thử nghiệm được đặt một lần, vì vậy họ chỉ phải chịu một chuyển hướng trên trang đầu tiên họ yêu cầu và từ đó trở đi không có chuyển hướng nào. Tuy nhiên, đối với bất kỳ trình duyệt hoặc tác nhân người dùng nào khác, chẳng hạn như công cụ tìm kiếm, không trả về cookie, mọi trang đơn giản có thể dẫn đến chuyển hướng.
Một phương pháp khác để kiểm tra hỗ trợ cookie là với Javascript - theo cách này, không cần chuyển hướng - bạn có thể viết một cookie và đọc lại nó gần như ngay lập tức để xem nó đã được lưu trữ hay chưa và sau đó được truy xuất. Nhược điểm của điều này là nó chạy trong tập lệnh ở phía máy khách - tức là nếu bạn vẫn muốn thông báo về việc cookie có được hỗ trợ để quay trở lại máy chủ hay không, thì bạn vẫn phải tổ chức điều đó - chẳng hạn như với một cuộc gọi Ajax.
Đối với ứng dụng của riêng tôi, tôi triển khai một số biện pháp bảo vệ đối với các cuộc tấn công 'Đăng nhập CSRF', một biến thể của các cuộc tấn công CSRF, bằng cách đặt cookie chứa mã thông báo ngẫu nhiên trên màn hình đăng nhập trước khi người dùng đăng nhập và kiểm tra mã thông báo đó khi người dùng gửi thông tin đăng nhập của họ chi tiết. Đọc thêm về Đăng nhập CSRF từ Google. Một tác dụng phụ của việc này là ngay khi họ đăng nhập, tôi có thể kiểm tra sự tồn tại của cookie đó - không cần thiết phải chuyển hướng thêm.