Các host
header kể webserver mà máy chủ ảo để sử dụng (nếu thiết lập). Bạn thậm chí có thể có cùng một máy chủ ảo bằng cách sử dụng một số bí danh (= miền và miền ký tự đại diện). Trong trường hợp này, bạn vẫn có khả năng đọc tiêu đề đó theo cách thủ công trong ứng dụng web của mình nếu bạn muốn cung cấp các hành vi khác nhau dựa trên các miền khác nhau được xử lý. Điều này là có thể vì trong máy chủ web của bạn, bạn có thể (và nếu tôi không nhầm thì bạn phải) thiết lập một vhost làm máy chủ lưu trữ mặc định. Vhost mặc định này được sử dụng bất cứ khi nào host
tiêu đề không khớp với bất kỳ máy chủ ảo nào đã định cấu hình.
Điều đó có nghĩa là: Bạn hiểu đúng, mặc dù nói "nhiều máy chủ" có thể hơi gây hiểu nhầm: Máy chủ (máy được định địa chỉ) giống nhau, những gì thực sự được giải quyết cho địa chỉ IP là các tên miền khác nhau (bao gồm cả miền phụ) cũng được tham chiếu thành tên máy chủ (nhưng không phải máy chủ!).
Mặc dù không phải là một phần của câu hỏi, nhưng một sự thật thú vị: Đặc điểm kỹ thuật này đã dẫn đến sự cố với SSL trong những ngày đầu vì máy chủ web phải cung cấp chứng chỉ tương ứng với miền mà máy khách đã sử dụng. Tuy nhiên, để biết được chứng chỉ nào cần sử dụng, máy chủ web cần phải biết trước tên máy chủ có địa chỉ. Nhưng vì máy khách chỉ gửi thông tin đó qua kênh được mã hóa (có nghĩa là: sau khi chứng chỉ đã được gửi), máy chủ phải giả định rằng bạn đã duyệt máy chủ mặc định. Điều đó có nghĩa là một miền được bảo mật ssl trên mỗi địa chỉ IP / kết hợp cổng.
Điều này đã được khắc phục với Chỉ báo tên máy chủ ; tuy nhiên, điều đó lại phá vỡ một số quyền riêng tư, vì tên máy chủ bây giờ lại được chuyển sang dạng văn bản thuần túy, vì vậy mọi người ở giữa sẽ thấy tên máy chủ nào bạn đang cố gắng kết nối.
Mặc dù máy chủ web sẽ biết tên máy chủ từ Chỉ báo tên máy chủ, nhưng host
tiêu đề không phải là lỗi thời, vì thông tin Chỉ báo tên máy chủ chỉ được sử dụng trong quá trình bắt tay TLS. Với một kết nối không an toàn, không có Chỉ báo Tên Máy chủ nào cả, vì vậy host
tiêu đề vẫn hợp lệ (và cần thiết).
Một thực tế thú vị khác: Hầu hết các máy chủ web (nếu không phải tất cả) đều từ chối yêu cầu http của bạn nếu nó không chứa chính xác một host
tiêu đề, ngay cả khi nó có thể bị bỏ qua vì chỉ có vhost mặc định được định cấu hình. Điều đó có nghĩa là thông tin bắt buộc tối thiểu trong yêu cầu http- (get-) là dòng đầu tiên chứa METHOD
RESOURCE
và PROTOCOL VERSION
và ít nhất là host
-header, như sau:
GET /someresource.html HTTP/1.1
Host: www.example.com
Trong Tài liệu MDN trên Host-Header, họ thực sự diễn đạt như thế này:
Trường tiêu đề Máy chủ lưu trữ phải được gửi trong tất cả các thông báo yêu cầu HTTP / 1.1. Mã trạng thái 400 (Yêu cầu không hợp lệ) sẽ được gửi đến bất kỳ thông báo yêu cầu HTTP / 1.1 nào thiếu trường tiêu đề Máy chủ lưu trữ hoặc chứa nhiều hơn một trường.
Như đã đề cập bởi Darrel Miller, thông số kỹ thuật đầy đủ có thể được tìm thấy trong RFC7230 .
vhost
chỉ có 3 lần xuất hiện thân củavirtual host
với nghĩa không gần gũi với cụm từ và 12 chodefault
hầu hết về cảng,