Làm cách nào để thiết lập tên miền không có cookie?


24

Tôi đã đọc rằng tốt nhất là phục vụ nội dung tĩnh (css, javascript, v.v.) từ tên miền không có cookie hoặc tên miền phụ để có hiệu suất tốt hơn. Tôi giả sử một tên miền không phải là cookie theo mặc định. Làm cách nào để xác định rằng tôi không muốn sử dụng cookie?


3
Điều này thực sự không quan trọng trừ khi bạn đang phục vụ hàng ngàn trang mỗi giờ hoặc hàng nghìn trang mỗi phút.

"Mặc dù cố gắng hết sức để giảm kích thước cookie, việc sử dụng Google Analytics của chúng tôi khiến kích thước cookie trung bình của người dùng khoảng 1 kilobyte." Hữu ích và có liên quan - chrishates Writing.com/post/68794699432/small-things-add-up
mvark

Câu trả lời:


26

Khi những thứ như YSlowTốc độ trang yêu cầu bạn thiết lập các miền không có cookie, ý nghĩa thực sự của chúng là phục vụ phương tiện truyền thông từ một tên miền mà bạn sẽ không đặt bất kỳ hoặc không đặt bất kỳ (toàn cầu) nào trong quá khứ. Đôi khi điều này có thể được thực hiện bằng cách sử dụng các tên miền phụ, chẳng hạn như media.domain.com, hoặc static.domain.com, tuy nhiên nếu bạn đặt cookie trên domain.comtoàn bộ tên miền - một cookie cho *.domain.com- thì cookie này sẽ được máy khách gửi lại cho máy chủ vào mọi yêu cầu cho mọi miền liên quan đến domain.com. Điều này bao gồm tất cả các tên miền phụ.

Cookie toàn cầu trở thành một vấn đề nếu bạn quyết định từ bỏ việc sử dụng www.tên miền của mình. Nếu không có tên miền phụ cụ thể để đặt cookie, tất cả cookie phải được đặt *.domain.comđể chúng hoạt động.

Vấn đề cookie toàn cầu này là lý do tại sao bạn sẽ thấy phương tiện tĩnh được phục vụ từ những nơi như ytimg.comtrên YouTube. ytimg.comsẽ không bao giờ cung cấp nội dung động có thể đặt cookie, điều đó có nghĩa là sẽ không có cookie nào được gửi từ máy khách trở lại máy chủ khi các tên miền này là một phần của yêu cầu HTTP.

Nếu bạn chắc chắn rằng bạn sẽ không bao giờ có cookie được đặt *.domain.comthì bạn có thể sử dụng tên miền phụ cho nhu cầu của mình. Xin lưu ý rằng hầu hết thời gian nếu bạn tích hợp với một trang web hoặc dịch vụ khác thông qua Javascript, họ sẽ đặt cookie tên miền toàn cầu.

Trong Apache (và tôi chắc chắn rằng mọi máy chủ web khác) bạn có thể đặt hoặc hủy đặt tiêu đề trước khi yêu cầu được trả lời. Điều này sẽ không khắc phục vấn đề của khách hàng gửi cookie đến máy chủ của bạn, nhưng nó sẽ giữ cho tên miền của bạn không bao giờ gửi hoặc thiết lập cookie ban đầu. Chỉ có vấn đề nếu bạn phục vụ nội dung không tĩnh từ các miền không có cookie, điều này đánh bại mục đích của chúng.

Header unset Cookie
Header unset Set-Cookie 

Điều này sẽ bỏ đặt các tiêu đề cho cookie hiện có và để tạo cookie mới. Một lần nữa, chỉ một vấn đề nếu bạn phục vụ nội dung từ các miền tĩnh có khả năng đặt cookie. Đặt cái này trong cấu hình trang web hoặc virtualhost của bạn (tùy thuộc vào hệ điều hành, máy chủ và phiên bản của bạn có thể là bất kỳ số lượng địa điểm nào).


"Chỉ có vấn đề nếu bạn phục vụ nội dung không tĩnh từ các miền không có cookie, điều này đánh bại mục đích của chúng." - tại sao, chính xác? Không có gì về nội dung được tạo động mà vốn yêu cầu cookie.

1
Tôi không nói rằng việc phục vụ nội dung động từ miền tĩnh của bạn vốn đã đặt mọi thứ. Tôi đã nói rằng cookie sẽ là một vấn đề nếu bạn phục vụ nội dung động đặt cookie từ miền tĩnh của bạn. Mục đích của miền tĩnh là phục vụ nội dung không yêu cầu tương tác: hình ảnh, css, js, v.v. Nội dung động - là nơi đặt cookie của bạn - không nên được xử lý bởi miền tĩnh.
Bryson

6

Làm cách nào để xác định rằng tôi không muốn sử dụng cookie?

Đây không phải là về những gì bạn cần làm để có một miền không nấu ăn - đó là về những gì bạn không cần làm ... Để có một miền không nấu ăn, bạn phải đảm bảo ứng dụng của bạn chạy trên miền đó không đặt bất kỳ cookie nào . Điều này thường có nghĩa là không có thông tin đăng nhập, không có phân tích google, không có phiên - tức là chỉ phục vụ phương tiện và không có gì khác. Rõ ràng điều này phụ thuộc vào thiết lập của bạn.

Một sai lầm tôi đã làm gần đây là tôi đã không phân biệt được tên miền và tên miền phụ. Tôi bắt đầu phục vụ tất cả các phương tiện truyền thông của mình vì http://media.example.comnghĩ rằng đó là một miền không nấu ăn nhưng thực sự đó là một tên miền phụ và tôi đã tìm thấy nhiều cookie của mình từ trang web chính http://www.example.comđược đặt ở cấp tên miền và do đó gây ô nhiễm tên miền phụ vô dụng của tôi. Đây là liên kết về cách tôi giải quyết vấn đề đó: /server/160210/nginx-serve-static-content-from-a-cookieless-domain


2
Cookies từ www.example.net sẽ không được gửi đến static.example.net, nhưng cookie từ example.netsẽ được. Giải pháp là chuyển hướng example.netđến www.example.net.
TRiG

3

Làm cách nào để xác định rằng tôi không muốn sử dụng cookie?

Bạn không cần phải xác định rằng bạn không muốn sử dụng cookie, bạn chỉ không sử dụng chúng.


3
Không phải lúc nào cũng là một lựa chọn. Tích hợp tính năng Javascript từ các trang web khác thường sẽ đặt cookie toàn cầu cho tên miền cho dù bạn có muốn hay không.
Bryson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.