Yêu cầu HTML

Phần này xác định cú pháp và ngữ nghĩa của tất cả HTTP/1 tiêu chuẩn. 1 trường tiêu đề. Đối với các trường tiêu đề thực thể, cả người gửi và người nhận đều đề cập đến máy khách hoặc máy chủ, tùy thuộc vào người gửi và người nhận thực thể

Trường tiêu đề yêu cầu Chấp nhận có thể được sử dụng để chỉ định một số loại phương tiện nhất định được chấp nhận cho phản hồi. Các tiêu đề chấp nhận có thể được sử dụng để chỉ ra rằng yêu cầu được giới hạn cụ thể ở một nhóm nhỏ các loại mong muốn, như trong trường hợp yêu cầu cho một hình ảnh nội tuyến

       Accept         = "Accept" ":"
                        #( media-range [ accept-params ] )
       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]

Ký tự dấu hoa thị "*" được sử dụng để nhóm các loại phương tiện thành các phạm vi, với "*/*" biểu thị tất cả các loại phương tiện và "loại/*" biểu thị tất cả các kiểu con của loại đó. Phạm vi phương tiện CÓ THỂ bao gồm các tham số loại phương tiện áp dụng cho phạm vi đó

Mỗi phạm vi phương tiện CÓ THỂ được theo sau bởi một hoặc nhiều tham số chấp nhận, bắt đầu bằng tham số "q" để biểu thị yếu tố chất lượng tương đối. Tham số "q" đầu tiên (nếu có) phân tách (các) tham số phạm vi phương tiện khỏi tham số chấp nhận. Các yếu tố chất lượng cho phép người dùng hoặc tác nhân người dùng chỉ ra mức độ ưu tiên tương đối cho dải phương tiện đó, sử dụng thang giá trị q từ 0 đến 1 (phần 3. 9). Giá trị mặc định là q=1

      Note: Use of the "q" parameter name to separate media type
      parameters from Accept extension parameters is due to historical
      practice. Although this prevents any media type parameter named
      "q" from being used with a media range, such an event is believed
      to be unlikely given the lack of any "q" parameters in the IANA
      media type registry and the rare usage of any media type
      parameters in Accept. Future media types are discouraged from
      registering any parameter named "q".

ví dụ

       Accept: audio/*; q=0.2, audio/basic

NÊN được hiểu là "Tôi thích âm thanh/cơ bản hơn, nhưng hãy gửi cho tôi bất kỳ loại âm thanh nào nếu đó là loại tốt nhất hiện có sau khi giảm 80% về chất lượng. "

Nếu không có trường tiêu đề Chấp nhận, thì giả định rằng máy khách chấp nhận tất cả các loại phương tiện. Nếu có trường tiêu đề Chấp nhận và nếu máy chủ không thể gửi phản hồi có thể chấp nhận được theo giá trị trường Chấp nhận kết hợp, thì máy chủ NÊN gửi phản hồi 406 (không được chấp nhận)

Một ví dụ phức tạp hơn là

       Accept: text/plain; q=0.5, text/html,
               text/x-dvi; q=0.8, text/x-c

Bằng lời nói, điều này sẽ được hiểu là "văn bản/html và văn bản/x-c là các loại phương tiện ưa thích, nhưng nếu chúng không tồn tại, hãy gửi thực thể văn bản/x-dvi và nếu không tồn tại, hãy gửi văn bản/thuần túy . "

Phạm vi phương tiện có thể được ghi đè bởi phạm vi phương tiện cụ thể hơn hoặc loại phương tiện cụ thể. Nếu nhiều hơn một phạm vi phương tiện áp dụng cho một loại nhất định, tham chiếu cụ thể nhất sẽ được ưu tiên. Ví dụ,

       Accept: text/*, text/html, text/html;level=1, */*

có quyền ưu tiên sau

       1) text/html;level=1
       2) text/html
       3) text/*
       4) */*

Hệ số chất lượng loại phương tiện được liên kết với một loại nhất định được xác định bằng cách tìm phạm vi phương tiện có mức độ ưu tiên cao nhất phù hợp với loại đó. Ví dụ,

       Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,
               text/html;level=2;q=0.4, */*;q=0.5

sẽ khiến các giá trị sau được liên kết

       text/html;level=1         = 1
       text/html                 = 0.7
       text/plain                = 0.3
____9
       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
0

14. 2 Bộ ký tự chấp nhận

Trường tiêu đề yêu cầu Accept-Charset có thể được sử dụng để cho biết bộ ký tự nào được chấp nhận cho phản hồi. Trường này cho phép các máy khách có khả năng hiểu các bộ ký tự toàn diện hơn hoặc dành cho mục đích đặc biệt để báo hiệu khả năng đó cho một máy chủ có khả năng trình bày các tài liệu trong các bộ ký tự đó

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
1

Giá trị bộ ký tự được mô tả trong phần 3. 4. Mỗi bộ ký tự CÓ THỂ được cung cấp một giá trị chất lượng liên quan thể hiện sở thích của người dùng đối với bộ ký tự đó. Giá trị mặc định là q=1. Một ví dụ là

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
2

Giá trị đặc biệt "*", nếu có trong trường Bộ ký tự chấp nhận, khớp với mọi bộ ký tự (bao gồm ISO-8859-1) không được đề cập ở nơi khác trong trường Bộ ký tự chấp nhận. Nếu không có "*" trong trường Bộ ký tự chấp nhận, thì tất cả các bộ ký tự không được đề cập rõ ràng sẽ có giá trị chất lượng là 0, ngoại trừ ISO-8859-1, có giá trị chất lượng là 1 nếu không được đề cập rõ ràng

Nếu không có tiêu đề Bộ ký tự chấp nhận, mặc định là bất kỳ bộ ký tự nào đều được chấp nhận. Nếu có tiêu đề Bộ ký tự chấp nhận và nếu máy chủ không thể gửi phản hồi có thể chấp nhận được theo tiêu đề Bộ ký tự chấp nhận, thì máy chủ NÊN gửi phản hồi lỗi với mã trạng thái 406 (không được chấp nhận), mặc dù việc gửi

14. 3 Mã hóa chấp nhận

Trường tiêu đề yêu cầu Mã hóa Chấp nhận tương tự như Chấp nhận, nhưng hạn chế mã hóa nội dung (phần 3. 5) được chấp nhận trong phản hồi

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
3____14

Ví dụ về việc sử dụng nó là

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
5

Máy chủ kiểm tra xem mã hóa nội dung có được chấp nhận hay không, theo trường Mã hóa chấp nhận, sử dụng các quy tắc này

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
6
       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
7____18
       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
9

Nếu trường Mã hóa chấp nhận xuất hiện trong một yêu cầu và nếu máy chủ không thể gửi phản hồi có thể chấp nhận được theo tiêu đề Mã hóa chấp nhận, thì máy chủ NÊN gửi phản hồi lỗi với mã trạng thái 406 (Không được chấp nhận)

Nếu không có trường Mã hóa chấp nhận trong yêu cầu, máy chủ CÓ THỂ cho rằng máy khách sẽ chấp nhận bất kỳ mã hóa nội dung nào. Trong trường hợp này, nếu "danh tính" là một trong những mã hóa nội dung có sẵn, thì máy chủ NÊN sử dụng mã hóa nội dung "danh tính", trừ khi nó có thêm thông tin rằng một mã hóa nội dung khác có ý nghĩa đối với máy khách

      Note: Use of the "q" parameter name to separate media type
      parameters from Accept extension parameters is due to historical
      practice. Although this prevents any media type parameter named
      "q" from being used with a media range, such an event is believed
      to be unlikely given the lack of any "q" parameters in the IANA
      media type registry and the rare usage of any media type
      parameters in Accept. Future media types are discouraged from
      registering any parameter named "q".
0
      Note: Use of the "q" parameter name to separate media type
      parameters from Accept extension parameters is due to historical
      practice. Although this prevents any media type parameter named
      "q" from being used with a media range, such an event is believed
      to be unlikely given the lack of any "q" parameters in the IANA
      media type registry and the rare usage of any media type
      parameters in Accept. Future media types are discouraged from
      registering any parameter named "q".
1
      Note: Use of the "q" parameter name to separate media type
      parameters from Accept extension parameters is due to historical
      practice. Although this prevents any media type parameter named
      "q" from being used with a media range, such an event is believed
      to be unlikely given the lack of any "q" parameters in the IANA
      media type registry and the rare usage of any media type
      parameters in Accept. Future media types are discouraged from
      registering any parameter named "q".
2

14. 4 Ngôn ngữ chấp nhận

Trường tiêu đề yêu cầu Ngôn ngữ chấp nhận tương tự như Chấp nhận, nhưng hạn chế tập hợp các ngôn ngữ tự nhiên được ưu tiên làm phản hồi cho yêu cầu. Thẻ ngôn ngữ được xác định trong phần 3. 10

      Note: Use of the "q" parameter name to separate media type
      parameters from Accept extension parameters is due to historical
      practice. Although this prevents any media type parameter named
      "q" from being used with a media range, such an event is believed
      to be unlikely given the lack of any "q" parameters in the IANA
      media type registry and the rare usage of any media type
      parameters in Accept. Future media types are discouraged from
      registering any parameter named "q".
3

Mỗi phạm vi ngôn ngữ CÓ THỂ được cung cấp một giá trị chất lượng liên quan thể hiện ước tính tùy chọn của người dùng đối với các ngôn ngữ được chỉ định bởi phạm vi đó. Giá trị chất lượng mặc định là "q=1". Ví dụ,

      Note: Use of the "q" parameter name to separate media type
      parameters from Accept extension parameters is due to historical
      practice. Although this prevents any media type parameter named
      "q" from being used with a media range, such an event is believed
      to be unlikely given the lack of any "q" parameters in the IANA
      media type registry and the rare usage of any media type
      parameters in Accept. Future media types are discouraged from
      registering any parameter named "q".
4

có nghĩa là. "Tôi thích tiếng Đan Mạch hơn, nhưng sẽ chấp nhận tiếng Anh Anh và các loại tiếng Anh khác. " Phạm vi ngôn ngữ khớp với thẻ ngôn ngữ nếu nó chính xác bằng thẻ hoặc nếu nó chính xác bằng tiền tố của thẻ sao cho ký tự thẻ đầu tiên theo sau tiền tố là "-". Phạm vi đặc biệt "*", nếu có trong trường Ngôn ngữ chấp nhận, khớp với mọi thẻ không khớp với bất kỳ phạm vi nào khác có trong trường Ngôn ngữ chấp nhận

      Note: Use of the "q" parameter name to separate media type
      parameters from Accept extension parameters is due to historical
      practice. Although this prevents any media type parameter named
      "q" from being used with a media range, such an event is believed
      to be unlikely given the lack of any "q" parameters in the IANA
      media type registry and the rare usage of any media type
      parameters in Accept. Future media types are discouraged from
      registering any parameter named "q".
5

Yếu tố chất lượng ngôn ngữ được gán cho thẻ ngôn ngữ bởi trường Ngôn ngữ chấp nhận là giá trị chất lượng của phạm vi ngôn ngữ dài nhất trong trường khớp với thẻ ngôn ngữ. Nếu không có phạm vi ngôn ngữ nào trong trường khớp với thẻ, hệ số chất lượng ngôn ngữ được chỉ định là 0. Nếu không có tiêu đề Ngôn ngữ chấp nhận trong yêu cầu, máy chủ

NÊN cho rằng tất cả các ngôn ngữ đều được chấp nhận như nhau. Nếu có tiêu đề Ngôn ngữ chấp nhận thì tất cả các ngôn ngữ được gán hệ số chất lượng lớn hơn 0 đều được chấp nhận

Việc gửi tiêu đề Ngôn ngữ chấp nhận với các tùy chọn ngôn ngữ hoàn chỉnh của người dùng trong mọi yêu cầu có thể trái với kỳ vọng về quyền riêng tư của người dùng. Để thảo luận về vấn đề này, xem phần 15. 1. 4

Vì tính dễ hiểu phụ thuộc nhiều vào từng người dùng, nên các ứng dụng khách nên cung cấp lựa chọn ngôn ngữ ưu tiên cho người dùng. Nếu lựa chọn không có sẵn, thì trường tiêu đề Ngôn ngữ chấp nhận KHÔNG ĐƯỢC cung cấp trong yêu cầu

      Note: Use of the "q" parameter name to separate media type
      parameters from Accept extension parameters is due to historical
      practice. Although this prevents any media type parameter named
      "q" from being used with a media range, such an event is believed
      to be unlikely given the lack of any "q" parameters in the IANA
      media type registry and the rare usage of any media type
      parameters in Accept. Future media types are discouraged from
      registering any parameter named "q".
6

14. 5 Phạm vi chấp nhận

      Note: Use of the "q" parameter name to separate media type
      parameters from Accept extension parameters is due to historical
      practice. Although this prevents any media type parameter named
      "q" from being used with a media range, such an event is believed
      to be unlikely given the lack of any "q" parameters in the IANA
      media type registry and the rare usage of any media type
      parameters in Accept. Future media types are discouraged from
      registering any parameter named "q".
7______28
      Note: Use of the "q" parameter name to separate media type
      parameters from Accept extension parameters is due to historical
      practice. Although this prevents any media type parameter named
      "q" from being used with a media range, such an event is believed
      to be unlikely given the lack of any "q" parameters in the IANA
      media type registry and the rare usage of any media type
      parameters in Accept. Future media types are discouraged from
      registering any parameter named "q".
9
       Accept: audio/*; q=0.2, audio/basic
0
       Accept: audio/*; q=0.2, audio/basic
1
       Accept: audio/*; q=0.2, audio/basic
2
       Accept: audio/*; q=0.2, audio/basic
3
       Accept: audio/*; q=0.2, audio/basic
4
       Accept: audio/*; q=0.2, audio/basic
5
       Accept: audio/*; q=0.2, audio/basic
6
       Accept: audio/*; q=0.2, audio/basic
7
       Accept: audio/*; q=0.2, audio/basic
8
       Accept: audio/*; q=0.2, audio/basic
9
       Accept: text/plain; q=0.5, text/html,
               text/x-dvi; q=0.8, text/x-c
0
       Accept: text/plain; q=0.5, text/html,
               text/x-dvi; q=0.8, text/x-c
1
       Accept: text/plain; q=0.5, text/html,
               text/x-dvi; q=0.8, text/x-c
2
       Accept: text/plain; q=0.5, text/html,
               text/x-dvi; q=0.8, text/x-c
3
       Accept: text/plain; q=0.5, text/html,
               text/x-dvi; q=0.8, text/x-c
4
       Accept: text/plain; q=0.5, text/html,
               text/x-dvi; q=0.8, text/x-c
5

14. 8 Ủy quyền

       Accept: text/plain; q=0.5, text/html,
               text/x-dvi; q=0.8, text/x-c
6
       Accept: text/plain; q=0.5, text/html,
               text/x-dvi; q=0.8, text/x-c
7____48
       Accept: text/plain; q=0.5, text/html,
               text/x-dvi; q=0.8, text/x-c
9
       Accept: text/*, text/html, text/html;level=1, */*
0
       Accept: text/*, text/html, text/html;level=1, */*
1
       Accept: text/*, text/html, text/html;level=1, */*
2

14. 9 Kiểm soát bộ đệm

Trường tiêu đề chung Kiểm soát bộ đệm được sử dụng để chỉ định các lệnh PHẢI được tuân theo bởi tất cả các cơ chế bộ đệm dọc theo chuỗi yêu cầu/phản hồi. Các lệnh chỉ định hành vi nhằm ngăn chặn bộ đệm can thiệp bất lợi vào yêu cầu hoặc phản hồi. Các lệnh này thường ghi đè lên các thuật toán bộ nhớ đệm mặc định. Chỉ thị bộ đệm là đơn hướng trong đó sự hiện diện của một chỉ thị trong một yêu cầu không ngụ ý rằng cùng một chỉ thị sẽ được đưa ra trong phản hồi

       Accept: text/*, text/html, text/html;level=1, */*
3

Chỉ thị bộ đệm PHẢI được thông qua bởi ứng dụng proxy hoặc cổng, bất kể tầm quan trọng của chúng đối với ứng dụng đó, vì chỉ thị có thể được áp dụng cho tất cả người nhận dọc theo chuỗi yêu cầu/phản hồi. Không thể chỉ định một chỉ thị bộ đệm cho một bộ đệm cụ thể

       Accept: text/*, text/html, text/html;level=1, */*
4____55____56____57
       Accept: text/*, text/html, text/html;level=1, */*
8

Khi một lệnh xuất hiện mà không có bất kỳ tham số 1#field-name nào, lệnh này sẽ áp dụng cho toàn bộ yêu cầu hoặc phản hồi. Khi một lệnh như vậy xuất hiện với tham số 1#tên trường, nó chỉ áp dụng cho trường hoặc các trường được đặt tên chứ không áp dụng cho phần còn lại của yêu cầu hoặc phản hồi. Cơ chế này hỗ trợ khả năng mở rộng; . 1

Các chỉ thị kiểm soát bộ đệm có thể được chia thành các danh mục chung này

       Accept: text/*, text/html, text/html;level=1, */*
9
       1) text/html;level=1
       2) text/html
       3) text/*
       4) */*
0
       1) text/html;level=1
       2) text/html
       3) text/*
       4) */*
1
       1) text/html;level=1
       2) text/html
       3) text/*
       4) */*
2
       1) text/html;level=1
       2) text/html
       3) text/*
       4) */*
3
       1) text/html;level=1
       2) text/html
       3) text/*
       4) */*
4

14. 9. 1 Bộ nhớ cache là gì

Theo mặc định, một phản hồi có thể lưu vào bộ nhớ đệm nếu các yêu cầu của phương thức yêu cầu, các trường tiêu đề yêu cầu và trạng thái phản hồi cho biết rằng nó có thể lưu vào bộ đệm. Phần 13. 4 tóm tắt các giá trị mặc định này cho khả năng lưu vào bộ nhớ đệm. Các chỉ thị phản hồi Kiểm soát bộ đệm sau đây cho phép máy chủ gốc ghi đè khả năng lưu vào bộ nhớ cache mặc định của phản hồi

publicCho biết rằng phản hồi CÓ THỂ được lưu vào bộ nhớ cache bởi bất kỳ bộ nhớ cache nào, ngay cả khi thông thường nó không thể lưu vào bộ nhớ cache hoặc chỉ có thể lưu vào bộ nhớ cache trong bộ nhớ cache không chia sẻ. (Xem thêm Ủy quyền, mục 14. 8, để biết thêm chi tiết. ) privateCho biết rằng tất cả hoặc một phần của thông báo phản hồi dành cho một người dùng và KHÔNG ĐƯỢC lưu vào bộ nhớ cache bằng bộ nhớ cache dùng chung. Điều này cho phép máy chủ gốc tuyên bố rằng các phần được chỉ định của phản hồi chỉ dành cho một người dùng và không phải là phản hồi hợp lệ cho các yêu cầu của người dùng khác. Bộ đệm riêng (không dùng chung) CÓ THỂ lưu vào bộ đệm phản hồi

Ghi chú. Việc sử dụng từ riêng tư này chỉ kiểm soát nơi phản hồi có thể được lưu vào bộ đệm và không thể đảm bảo quyền riêng tư của nội dung tin nhắn

no-cacheNếu lệnh no-cache không chỉ định tên trường, thì bộ đệm KHÔNG ĐƯỢC sử dụng phản hồi để đáp ứng yêu cầu tiếp theo mà không cần xác thực lại thành công với máy chủ gốc. Điều này cho phép máy chủ gốc ngăn bộ nhớ đệm ngay cả bằng bộ đệm đã được định cấu hình để trả về các phản hồi cũ cho các yêu cầu của máy khách. Nếu chỉ thị không có bộ đệm chỉ định một hoặc nhiều tên trường, thì bộ đệm CÓ THỂ sử dụng phản hồi để đáp ứng yêu cầu tiếp theo, tùy thuộc vào bất kỳ hạn chế nào khác đối với bộ đệm. Tuy nhiên, (các) tên trường được chỉ định KHÔNG ĐƯỢC gửi trong phản hồi cho yêu cầu tiếp theo mà không xác thực lại thành công với máy chủ gốc. Điều này cho phép máy chủ gốc ngăn việc sử dụng lại một số trường tiêu đề nhất định trong phản hồi, trong khi vẫn cho phép lưu vào bộ đệm phần còn lại của phản hồi

Ghi chú. Hầu hết HTTP/1. 0 bộ đệm sẽ không nhận ra hoặc tuân theo chỉ thị này

14. 9. 2 Những gì có thể được lưu trữ bởi bộ nhớ cache

no-storeMục đích của chỉ thị no-store là để ngăn chặn việc vô tình tiết lộ hoặc lưu giữ thông tin nhạy cảm (ví dụ: trên băng sao lưu). Lệnh cấm lưu trữ áp dụng cho toàn bộ thư và CÓ THỂ được gửi trong phản hồi hoặc trong yêu cầu. Nếu được gửi trong một yêu cầu, bộ đệm KHÔNG ĐƯỢC lưu trữ bất kỳ phần nào của yêu cầu này hoặc bất kỳ phản hồi nào đối với yêu cầu đó. Nếu được gửi trong một phản hồi, bộ đệm KHÔNG ĐƯỢC lưu trữ bất kỳ phần nào của phản hồi này hoặc yêu cầu gợi ra nó. Chỉ thị này áp dụng cho cả bộ nhớ cache không chia sẻ và chia sẻ. "KHÔNG ĐƯỢC lưu trữ" trong ngữ cảnh này có nghĩa là bộ đệm KHÔNG ĐƯỢC cố ý lưu trữ thông tin trong bộ nhớ cố định và PHẢI cố gắng hết sức để xóa thông tin khỏi bộ lưu trữ dễ bay hơi càng nhanh càng tốt sau khi chuyển tiếp nó. Ngay cả khi chỉ thị này được liên kết với một phản hồi, người dùng có thể lưu trữ rõ ràng một phản hồi như vậy bên ngoài hệ thống bộ nhớ đệm (e. g. , với hộp thoại "Lưu dưới dạng"). Bộ đệm lịch sử CÓ THỂ lưu trữ các phản hồi như một phần của hoạt động bình thường của chúng. Mục đích của chỉ thị này là để đáp ứng các yêu cầu đã nêu của một số người dùng và tác giả dịch vụ, những người lo ngại về việc vô tình tiết lộ thông tin thông qua các truy cập không lường trước được vào cấu trúc dữ liệu bộ đệm. Mặc dù việc sử dụng chỉ thị này có thể cải thiện quyền riêng tư trong một số trường hợp, nhưng chúng tôi lưu ý rằng nó KHÔNG phải là cơ chế đáng tin cậy hoặc đầy đủ để đảm bảo quyền riêng tư. Cụ thể, các bộ nhớ cache độc ​​hại hoặc bị xâm phạm có thể không nhận ra hoặc tuân theo chỉ thị này và các mạng truyền thông có thể dễ bị nghe trộm

14. 9. 3 Sửa đổi Cơ chế Hết hạn Cơ bản

Thời gian hết hạn của một thực thể CÓ THỂ được chỉ định bởi máy chủ gốc bằng cách sử dụng tiêu đề Expires (xem phần 14. 21). Ngoài ra, nó CÓ THỂ được chỉ định bằng cách sử dụng chỉ thị tuổi tối đa trong phản hồi. Khi chỉ thị kiểm soát bộ nhớ cache có độ tuổi tối đa xuất hiện trong phản hồi được lưu trong bộ nhớ cache, phản hồi sẽ cũ nếu tuổi hiện tại của nó lớn hơn giá trị tuổi đã cho (tính bằng giây) tại thời điểm yêu cầu mới cho tài nguyên đó. Lệnh max-age trên một phản hồi ngụ ý rằng phản hồi có thể lưu vào bộ nhớ cache (i. e. , "public") trừ khi có một số chỉ thị bộ nhớ cache khác, hạn chế hơn

Nếu một phản hồi bao gồm cả tiêu đề Hết hạn và chỉ thị tuổi tối đa, thì chỉ thị tuổi tối đa sẽ ghi đè tiêu đề Hết hạn, ngay cả khi tiêu đề Hết hạn hạn chế hơn. Quy tắc này cho phép máy chủ gốc cung cấp, đối với một phản hồi nhất định, thời gian hết hạn lâu hơn đối với HTTP/1. 1 (hoặc mới hơn) so với HTTP/1. 0 bộ đệm. Điều này có thể hữu ích nếu một số HTTP/1. 0 tính toán sai tuổi hoặc thời gian hết hạn, có thể do đồng hồ không được đồng bộ hóa

Nhiều HTTP/1. 0 sẽ coi giá trị Hết hạn nhỏ hơn hoặc bằng giá trị Ngày phản hồi là tương đương với chỉ thị phản hồi Kiểm soát bộ đệm "không có bộ đệm". Nếu một HTTP/1. 1 bộ đệm nhận được phản hồi như vậy và phản hồi không bao gồm trường tiêu đề Kiểm soát bộ đệm, nó NÊN coi phản hồi là không thể lưu vào bộ đệm để duy trì khả năng tương thích với HTTP/1. 0 máy chủ

Ghi chú. Máy chủ gốc có thể muốn sử dụng tính năng kiểm soát bộ đệm HTTP tương đối mới, chẳng hạn như chỉ thị "riêng tư", trên mạng bao gồm các bộ đệm cũ hơn không hiểu tính năng đó. Máy chủ gốc sẽ cần kết hợp tính năng mới với trường Hết hạn có giá trị nhỏ hơn hoặc bằng giá trị Ngày. Điều này sẽ ngăn các bộ đệm cũ hơn lưu vào bộ đệm phản hồi không đúng cách

s-maxageNếu một phản hồi bao gồm một lệnh s-maxage, thì đối với bộ nhớ cache được chia sẻ (nhưng không phải cho bộ nhớ cache riêng tư), tuổi tối đa được chỉ định bởi lệnh này sẽ ghi đè tuổi tối đa được chỉ định bởi lệnh max-age hoặc tiêu đề Expires. Chỉ thị s-maxage cũng ngụ ý ngữ nghĩa của chỉ thị xác thực lại proxy (xem phần 14. 9. 4), tôi. e. , rằng bộ nhớ đệm dùng chung không được sử dụng mục nhập sau khi nó trở nên cũ kỹ để phản hồi yêu cầu tiếp theo mà không xác thực lại mục đó với máy chủ gốc trước. Lệnh s- maxage luôn bị bỏ qua bởi bộ đệm riêng

Lưu ý rằng hầu hết các bộ đệm cũ hơn, không tuân thủ thông số kỹ thuật này, không triển khai bất kỳ chỉ thị kiểm soát bộ đệm nào. Một máy chủ gốc muốn sử dụng một chỉ thị kiểm soát bộ đệm để hạn chế, nhưng không ngăn chặn, bộ nhớ đệm bằng HTTP/1. Bộ đệm tuân thủ 1 CÓ THỂ khai thác yêu cầu rằng lệnh max-age sẽ ghi đè tiêu đề Expires và thực tế là tiền HTTP/1. Bộ đệm tuân thủ 1 không tuân thủ chỉ thị tuổi tối đa

Các chỉ thị khác cho phép tác nhân người dùng sửa đổi cơ chế hết hạn cơ bản. Các chỉ thị này CÓ THỂ được chỉ định theo yêu cầu

max-ageCho biết rằng khách hàng sẵn sàng chấp nhận phản hồi có tuổi không lớn hơn thời gian đã chỉ định tính bằng giây. Trừ khi chỉ thị max-stale cũng được bao gồm, khách hàng sẽ không sẵn sàng chấp nhận phản hồi cũ. min-freshCho biết rằng khách hàng sẵn sàng chấp nhận phản hồi có thời gian làm mới không ít hơn tuổi hiện tại cộng với thời gian được chỉ định tính bằng giây. Nghĩa là, khách hàng muốn một phản hồi vẫn còn mới trong ít nhất một số giây đã chỉ định. max-staleCho biết rằng khách hàng sẵn sàng chấp nhận phản hồi đã vượt quá thời gian hết hạn. Nếu max-stale được gán một giá trị, thì máy khách sẵn sàng chấp nhận phản hồi đã vượt quá thời gian hết hạn không quá số giây đã chỉ định. Nếu không có giá trị nào được gán cho max-stale, thì khách hàng sẵn sàng chấp nhận phản hồi cũ ở bất kỳ độ tuổi nào

Nếu bộ đệm trả về phản hồi cũ, do chỉ thị cũ tối đa đối với yêu cầu hoặc do bộ đệm được định cấu hình để ghi đè thời gian hết hạn của phản hồi, thì bộ đệm PHẢI đính kèm tiêu đề Cảnh báo vào phản hồi cũ, sử dụng Cảnh báo 110

Bộ đệm CÓ THỂ được định cấu hình để trả về các phản hồi cũ mà không cần xác thực, nhưng chỉ khi điều này không xung đột với bất kỳ yêu cầu cấp "PHẢI" nào liên quan đến việc xác thực bộ đệm (e. g. , chỉ thị kiểm soát bộ đệm "phải xác thực lại")

Nếu cả yêu cầu mới và mục nhập được lưu trong bộ nhớ cache đều bao gồm chỉ thị "tuổi tối đa", thì giá trị thấp hơn trong hai giá trị được sử dụng để xác định độ mới của mục nhập được lưu trong bộ nhớ cache cho yêu cầu đó

14. 9. 4 Xác thực lại bộ đệm và Kiểm soát tải lại

Đôi khi, một tác nhân người dùng có thể muốn hoặc cần nhấn mạnh rằng bộ đệm xác thực lại mục nhập bộ đệm của nó với máy chủ gốc (chứ không chỉ với bộ đệm tiếp theo dọc theo đường dẫn đến máy chủ gốc) hoặc tải lại mục nhập bộ đệm của nó từ máy chủ gốc. Việc xác thực lại từ đầu đến cuối có thể cần thiết nếu bộ đệm hoặc máy chủ gốc đã đánh giá quá cao thời gian hết hạn của phản hồi được lưu trong bộ đệm. Tải lại từ đầu đến cuối có thể cần thiết nếu mục nhập bộ đệm bị hỏng vì một số lý do

Xác thực lại từ đầu đến cuối có thể được yêu cầu khi ứng dụng khách không có bản sao được lưu trong bộ nhớ cache cục bộ của chính nó, trong trường hợp đó, chúng tôi gọi đó là "xác thực lại từ đầu đến cuối không xác định" hoặc khi ứng dụng khách có bản sao được lưu trong bộ nhớ đệm cục bộ, trong . "

Máy khách có thể chỉ định ba loại hành động này bằng cách sử dụng các chỉ thị yêu cầu Kiểm soát bộ đệm

Tải lại từ đầu đến cuốiYêu cầu bao gồm chỉ thị kiểm soát bộ đệm "không có bộ đệm" hoặc, để tương thích với HTTP/1. 0 khách hàng, "Pragma. không có bộ đệm". Tên trường KHÔNG ĐƯỢC đưa vào lệnh no-cache trong một yêu cầu. Máy chủ KHÔNG ĐƯỢC sử dụng bản sao được lưu trong bộ nhớ cache khi phản hồi yêu cầu đó. Xác thực lại cụ thể từ đầu đến cuốiYêu cầu bao gồm chỉ thị kiểm soát bộ đệm "max-age=0", buộc mỗi bộ đệm dọc theo đường dẫn đến máy chủ gốc để xác thực lại mục nhập của chính nó, nếu có, với bộ đệm hoặc máy chủ tiếp theo. Yêu cầu ban đầu bao gồm điều kiện xác thực bộ đệm với trình xác thực hiện tại của khách hàng. Xác thực lại từ đầu đến cuối không xác định Yêu cầu bao gồm chỉ thị kiểm soát bộ đệm "max-age=0", buộc mỗi bộ đệm dọc theo đường dẫn đến máy chủ gốc để xác thực lại mục nhập của chính nó, nếu có, với bộ đệm hoặc máy chủ tiếp theo. Yêu cầu ban đầu không bao gồm điều kiện xác thực bộ đệm; . max-ageKhi bộ đệm trung gian bị buộc phải xác thực lại mục nhập bộ đệm của chính nó, bằng lệnh max-age=0, và máy khách đã cung cấp trình xác thực của chính nó trong yêu cầu, trình xác thực được cung cấp có thể khác với trình xác thực hiện được lưu trữ với . Trong trường hợp này, bộ đệm CÓ THỂ sử dụng một trong hai trình xác thực để đưa ra yêu cầu của riêng nó mà không ảnh hưởng đến tính minh bạch về ngữ nghĩa. Tuy nhiên, việc lựa chọn trình xác thực có thể ảnh hưởng đến hiệu suất. Cách tiếp cận tốt nhất là bộ đệm trung gian sử dụng trình xác thực của chính nó khi đưa ra yêu cầu. Nếu máy chủ trả lời bằng 304 (Không được sửa đổi), thì bộ đệm có thể trả lại bản sao hiện đã được xác thực của nó cho máy khách với phản hồi 200 (OK). Tuy nhiên, nếu máy chủ trả lời bằng một thực thể mới và trình xác thực bộ đệm, thì bộ đệm trung gian có thể so sánh trình xác thực được trả về với trình xác thực được cung cấp trong yêu cầu của máy khách, bằng cách sử dụng chức năng so sánh mạnh. Nếu trình xác thực của máy khách bằng với máy chủ gốc, thì bộ đệm trung gian chỉ trả về 304 (Không được sửa đổi). Mặt khác, nó trả về thực thể mới với phản hồi 200 (OK). Nếu một yêu cầu bao gồm chỉ thị không có bộ nhớ cache, nó KHÔNG NÊN bao gồm min-fresh, max-stale hoặc max-age. only-if-cachedTrong một số trường hợp, chẳng hạn như thời điểm kết nối mạng cực kỳ kém, máy khách có thể muốn bộ đệm chỉ trả lại những phản hồi mà nó hiện đang lưu trữ và không tải lại hoặc xác thực lại với máy chủ gốc. Để thực hiện việc này, khách hàng có thể bao gồm chỉ thị chỉ nếu được lưu trong bộ nhớ cache trong một yêu cầu. Nếu nó nhận được chỉ thị này, thì bộ đệm NÊN phản hồi bằng cách sử dụng một mục được lưu trong bộ nhớ đệm phù hợp với các ràng buộc khác của yêu cầu hoặc phản hồi với trạng thái 504 (Hết thời gian chờ cổng). Tuy nhiên, nếu một nhóm bộ nhớ đệm đang được vận hành như một hệ thống hợp nhất với khả năng kết nối nội bộ tốt, yêu cầu đó CÓ THỂ được chuyển tiếp trong nhóm bộ nhớ đệm đó. phải xác thực lại Bởi vì bộ đệm CÓ THỂ được cấu hình để bỏ qua thời gian hết hạn được chỉ định của máy chủ và vì yêu cầu của máy khách CÓ THỂ bao gồm chỉ thị max-stale (có tác dụng tương tự), giao thức cũng bao gồm một cơ chế để máy chủ gốc yêu cầu xác thực lại . Khi chỉ thị phải xác thực lại có mặt trong phản hồi mà bộ đệm nhận được, bộ đệm đó KHÔNG ĐƯỢC sử dụng mục nhập sau khi nó trở nên cũ để phản hồi yêu cầu tiếp theo mà không cần xác thực lại trước với máy chủ gốc. (TÔI. e. , bộ đệm PHẢI thực hiện xác thực lại từ đầu đến cuối mỗi lần, nếu chỉ dựa trên Giá trị hết hạn hoặc tuổi tối đa của máy chủ gốc, phản hồi được lưu trong bộ đệm đã cũ. ) Chỉ thị phải xác thực lại là cần thiết để hỗ trợ hoạt động đáng tin cậy cho các tính năng giao thức nhất định. Trong mọi trường hợp, HTTP/1. 1 bộ đệm PHẢI tuân theo chỉ thị phải xác thực lại; . Máy chủ NÊN gửi chỉ thị phải xác thực lại khi và chỉ khi việc không xác thực lại yêu cầu đối với thực thể có thể dẫn đến hoạt động không chính xác, chẳng hạn như một giao dịch tài chính không được thực hiện một cách âm thầm. Người nhận KHÔNG ĐƯỢC thực hiện bất kỳ hành động tự động nào vi phạm chỉ thị này và KHÔNG ĐƯỢC tự động cung cấp bản sao chưa được xác thực của thực thể nếu việc xác thực lại không thành công. Mặc dù điều này không được khuyến nghị, nhưng các tác nhân người dùng hoạt động dưới các ràng buộc kết nối nghiêm trọng CÓ THỂ vi phạm chỉ thị này, nhưng nếu vậy, PHẢI cảnh báo rõ ràng cho người dùng rằng một phản hồi không hợp lệ đã được cung cấp. Cảnh báo PHẢI được cung cấp trên mỗi lần truy cập không hợp lệ và NÊN yêu cầu xác nhận rõ ràng của người dùng. xác thực lại proxyChỉ thị xác thực lại proxy có cùng ý nghĩa với chỉ thị phải xác thực lại, ngoại trừ việc nó không áp dụng cho các bộ nhớ cache của tác nhân người dùng không chia sẻ. Nó có thể được sử dụng trong một phản hồi cho một yêu cầu đã được xác thực để cho phép lưu trữ bộ đệm của người dùng và sau đó trả lại phản hồi mà không cần xác thực lại nó (vì nó đã được người dùng đó xác thực một lần), trong khi vẫn yêu cầu các proxy phục vụ nhiều người dùng để . Lưu ý rằng các phản hồi được xác thực như vậy cũng cần chỉ thị kiểm soát bộ đệm công khai để cho phép chúng được lưu vào bộ đệm hoàn toàn

14. 9. 5 Chỉ thị không chuyển đổi

no-transformNhững người triển khai bộ đệm trung gian (proxy) đã thấy hữu ích khi chuyển đổi loại phương tiện của các phần thân thực thể nhất định. Ví dụ: một proxy không trong suốt có thể chuyển đổi giữa các định dạng hình ảnh để tiết kiệm dung lượng bộ đệm hoặc để giảm lưu lượng truy cập trên một liên kết chậm. Tuy nhiên, các sự cố vận hành nghiêm trọng xảy ra khi các phép biến đổi này được áp dụng cho các phần thân thực thể dành cho các loại ứng dụng nhất định. Ví dụ: các ứng dụng cho hình ảnh y tế, phân tích dữ liệu khoa học và những ứng dụng sử dụng xác thực đầu cuối, tất cả đều phụ thuộc vào việc nhận một phần thân thực thể giống hệt từng chút một với phần thân thực thể ban đầu. Do đó, nếu một thông báo bao gồm chỉ thị không chuyển đổi, bộ nhớ cache hoặc proxy trung gian KHÔNG ĐƯỢC thay đổi các tiêu đề được liệt kê trong phần 13. 5. 2 là tuân theo chỉ thị không chuyển đổi. Điều này ngụ ý rằng bộ đệm hoặc proxy KHÔNG ĐƯỢC thay đổi bất kỳ khía cạnh nào của thực thể-thân được chỉ định bởi các tiêu đề này, bao gồm cả giá trị của chính thực thể-thân

14. 9. 6 tiện ích mở rộng kiểm soát bộ đệm

Trường tiêu đề Kiểm soát bộ đệm có thể được mở rộng thông qua việc sử dụng một hoặc nhiều mã thông báo mở rộng bộ đệm, mỗi mã thông báo có một giá trị được chỉ định tùy chọn. Các tiện ích mở rộng thông tin (những tiện ích không yêu cầu thay đổi hành vi của bộ đệm) CÓ THỂ được thêm vào mà không thay đổi ngữ nghĩa của các lệnh khác. Các tiện ích mở rộng hành vi được thiết kế để hoạt động bằng cách đóng vai trò là công cụ sửa đổi đối với cơ sở chỉ thị bộ đệm hiện có. Cả chỉ thị mới và chỉ thị tiêu chuẩn đều được cung cấp, sao cho các ứng dụng không hiểu chỉ thị mới sẽ mặc định hành vi được chỉ định bởi chỉ thị tiêu chuẩn và những ứng dụng hiểu chỉ thị mới sẽ nhận ra đó là sửa đổi các yêu cầu liên quan đến tiêu chuẩn . Theo cách này, có thể thực hiện các phần mở rộng cho các chỉ thị kiểm soát bộ đệm mà không yêu cầu thay đổi giao thức cơ sở

Cơ chế tiện ích mở rộng này phụ thuộc vào bộ đệm HTTP tuân theo tất cả các lệnh kiểm soát bộ đệm được xác định cho phiên bản HTTP gốc của nó, tuân theo một số tiện ích mở rộng nhất định và bỏ qua tất cả các lệnh mà nó không hiểu

Ví dụ: hãy xem xét một chỉ thị phản hồi mới giả định được gọi là cộng đồng hoạt động như một công cụ sửa đổi cho chỉ thị riêng tư. Chúng tôi xác định chỉ thị mới này có nghĩa là, ngoài bất kỳ bộ đệm ẩn không chia sẻ nào, bất kỳ bộ đệm ẩn nào chỉ được chia sẻ bởi các thành viên của cộng đồng có tên trong giá trị của nó đều có thể lưu trữ phản hồi vào bộ đệm ẩn. Máy chủ gốc mong muốn cho phép cộng đồng UCI sử dụng phản hồi riêng tư khác trong (các) bộ nhớ đệm dùng chung của họ có thể làm như vậy bằng cách đưa vào

       1) text/html;level=1
       2) text/html
       3) text/*
       4) */*
5

Bộ nhớ cache nhìn thấy trường tiêu đề này sẽ hoạt động chính xác ngay cả khi bộ nhớ cache không hiểu phần mở rộng bộ nhớ cache của cộng đồng, vì nó cũng sẽ thấy và hiểu chỉ thị riêng tư và do đó mặc định là hành vi an toàn

Các chỉ thị bộ đệm không được nhận dạng PHẢI được bỏ qua; . 1 bộ đệm sẽ được kết hợp với các lệnh tiêu chuẩn (hoặc khả năng lưu vào bộ đệm mặc định của phản hồi) sao cho hoạt động của bộ đệm sẽ duy trì chính xác ở mức tối thiểu ngay cả khi bộ đệm không hiểu (các) tiện ích mở rộng

Trường tiêu đề chung của kết nối cho phép người gửi chỉ định các tùy chọn mong muốn cho kết nối cụ thể đó và KHÔNG ĐƯỢC thông báo bởi proxy qua các kết nối khác

Tiêu đề kết nối có ngữ pháp sau

       1) text/html;level=1
       2) text/html
       3) text/*
       4) */*
6

HTTP/1. 1 proxy PHẢI phân tích cú pháp trường Tiêu đề kết nối trước khi thư được chuyển tiếp và đối với mỗi mã thông báo kết nối trong trường này, hãy xóa bất kỳ (các) trường tiêu đề nào khỏi thư có cùng tên với mã thông báo kết nối. Các tùy chọn kết nối được báo hiệu bởi sự hiện diện của mã thông báo kết nối trong trường Tiêu đề kết nối, chứ không phải bởi bất kỳ (các) trường tiêu đề bổ sung tương ứng nào, vì trường tiêu đề bổ sung có thể không được gửi nếu không có tham số nào được liên kết với tùy chọn kết nối đó

Các tiêu đề thư được liệt kê trong tiêu đề Kết nối KHÔNG ĐƯỢC bao gồm các tiêu đề đầu cuối, chẳng hạn như Kiểm soát bộ đệm

HTTP/1. 1 xác định tùy chọn "đóng" kết nối để người gửi báo hiệu rằng kết nối sẽ bị đóng sau khi hoàn thành phản hồi. Ví dụ,

       1) text/html;level=1
       2) text/html
       3) text/*
       4) */*
7

trong các trường tiêu đề yêu cầu hoặc phản hồi chỉ ra rằng kết nối KHÔNG NÊN được coi là `liên tục' (phần 8. 1) sau khi yêu cầu/phản hồi hiện tại hoàn tất

HTTP/1. 1 ứng dụng không hỗ trợ kết nối liên tục PHẢI bao gồm tùy chọn "đóng" kết nối trong mọi thông báo

Hệ thống nhận HTTP/1. 0 (hoặc phiên bản thấp hơn) bao gồm Tiêu đề kết nối PHẢI, đối với mỗi mã thông báo kết nối trong trường này, hãy xóa và bỏ qua bất kỳ (các) trường tiêu đề nào khỏi thông báo có cùng tên với mã thông báo kết nối. Điều này bảo vệ chống chuyển tiếp nhầm các trường tiêu đề như vậy bằng HTTP/1 trước. 1 proxy. Xem phần 19. 6. 2

14. 11 Mã hóa nội dung

Trường tiêu đề thực thể Mã hóa nội dung được sử dụng làm công cụ sửa đổi cho loại phương tiện. Khi xuất hiện, giá trị của nó cho biết mã hóa nội dung bổ sung nào đã được áp dụng cho phần thân thực thể và do đó cơ chế giải mã nào phải được áp dụng để có được loại phương tiện được tham chiếu bởi trường tiêu đề Kiểu nội dung. Mã hóa nội dung chủ yếu được sử dụng để cho phép nén tài liệu mà không làm mất danh tính của loại phương tiện cơ bản của nó

       1) text/html;level=1
       2) text/html
       3) text/*
       4) */*
8

Nội dung mã hóa được xác định trong phần 3. 5. Một ví dụ về việc sử dụng nó là

       1) text/html;level=1
       2) text/html
       3) text/*
       4) */*
9

Mã hóa nội dung là một đặc điểm của thực thể được xác định bởi URI yêu cầu. Thông thường, nội dung thực thể được lưu trữ với mã hóa này và chỉ được giải mã trước khi kết xuất hoặc sử dụng tương tự. Tuy nhiên, một proxy không minh bạch CÓ THỂ sửa đổi mã hóa nội dung nếu mã hóa mới được biết là có thể chấp nhận được đối với người nhận, trừ khi chỉ thị kiểm soát bộ đệm "không biến đổi" có trong thông báo

Nếu mã hóa nội dung của một thực thể không phải là "danh tính", thì phản hồi PHẢI bao gồm tiêu đề thực thể Mã hóa nội dung (phần 14. 11) liệt kê (các) mã hóa nội dung không nhận dạng được sử dụng

Nếu mã hóa nội dung của một thực thể trong thông báo yêu cầu không được máy chủ gốc chấp nhận, thì máy chủ NÊN phản hồi bằng mã trạng thái 415 (Loại phương tiện không được hỗ trợ)

Nếu nhiều mã hóa đã được áp dụng cho một thực thể, mã hóa nội dung PHẢI được liệt kê theo thứ tự mà chúng được áp dụng. Thông tin bổ sung về các tham số mã hóa CÓ THỂ được cung cấp bởi các trường tiêu đề thực thể khác không được xác định bởi thông số kỹ thuật này

14. 12 Nội dung-Ngôn ngữ

Trường tiêu đề thực thể Nội dung-Ngôn ngữ mô tả (các) ngôn ngữ tự nhiên của đối tượng dự định cho thực thể kèm theo. Lưu ý rằng điều này có thể không tương đương với tất cả các ngôn ngữ được sử dụng trong nội dung thực thể

       Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,
               text/html;level=2;q=0.4, */*;q=0.5
0

Thẻ ngôn ngữ được xác định trong phần 3. 10. Mục đích chính của Ngôn ngữ-nội dung là cho phép người dùng xác định và phân biệt các thực thể theo ngôn ngữ ưa thích của chính người dùng. Do đó, nếu nội dung cơ thể chỉ dành cho độc giả biết chữ Đan Mạch, thì trường thích hợp là

       Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,
               text/html;level=2;q=0.4, */*;q=0.5
1

Nếu không có Ngôn ngữ-nội dung nào được chỉ định, thì mặc định là nội dung dành cho mọi đối tượng ngôn ngữ. Điều này có thể có nghĩa là người gửi không coi nó là dành riêng cho bất kỳ ngôn ngữ tự nhiên nào hoặc người gửi không biết nó dành cho ngôn ngữ nào

Nhiều ngôn ngữ CÓ THỂ được liệt kê cho nội dung dành cho nhiều đối tượng. Ví dụ, một phiên bản của "Hiệp ước Waitangi," được trình bày đồng thời trong bản gốc tiếng Maori và tiếng Anh, sẽ kêu gọi

       Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,
               text/html;level=2;q=0.4, */*;q=0.5
2

Tuy nhiên, chỉ vì nhiều ngôn ngữ hiện diện trong một thực thể không có nghĩa là nó dành cho nhiều đối tượng ngôn ngữ. Một ví dụ sẽ là sách vỡ lòng về ngôn ngữ dành cho người mới bắt đầu, chẳng hạn như "Bài học đầu tiên bằng tiếng Latinh", rõ ràng là dành cho khán giả biết tiếng Anh sử dụng. Trong trường hợp này, Ngôn ngữ-nội dung sẽ chỉ bao gồm "vi"

Nội dung-Ngôn ngữ CÓ THỂ được áp dụng cho bất kỳ loại phương tiện nào - nó không giới hạn đối với các tài liệu văn bản

14. 13 Độ dài nội dung

Trường tiêu đề thực thể Content-Length cho biết kích thước của thực thể-thân, theo số thập phân của OCTET, được gửi tới người nhận hoặc, trong trường hợp của phương thức HEAD, kích thước của thực thể-thân sẽ được gửi có

       Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,
               text/html;level=2;q=0.4, */*;q=0.5
3

Một ví dụ là

       Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,
               text/html;level=2;q=0.4, */*;q=0.5
4

Các ứng dụng NÊN sử dụng trường này để chỉ ra độ dài truyền của nội dung thư, trừ khi điều này bị cấm bởi các quy tắc trong phần 4. 4

Bất kỳ Độ dài nội dung nào lớn hơn hoặc bằng 0 đều là giá trị hợp lệ. phần 4. 4 mô tả cách xác định độ dài của nội dung thư nếu Độ dài nội dung không được cung cấp

Lưu ý rằng ý nghĩa của trường này khác biệt đáng kể so với định nghĩa tương ứng trong MIME, trong đó nó là trường tùy chọn được sử dụng trong loại nội dung "message/external-body". Trong HTTP, nó NÊN được gửi bất cứ khi nào độ dài của tin nhắn có thể được xác định trước khi được chuyển, trừ khi điều này bị cấm bởi các quy tắc trong phần 4. 4

14. 14 Nội dung-Vị trí

Trường tiêu đề thực thể Nội dung-Vị trí CÓ THỂ được sử dụng để cung cấp vị trí tài nguyên cho thực thể được đính kèm trong thông báo khi thực thể đó có thể truy cập được từ một vị trí tách biệt với URI của tài nguyên được yêu cầu. Máy chủ NÊN cung cấp Vị trí nội dung cho biến thể tương ứng với thực thể phản hồi;

       Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,
               text/html;level=2;q=0.4, */*;q=0.5
5

Giá trị của Content-Location cũng xác định URI cơ sở cho thực thể

Giá trị Vị trí nội dung không phải là giá trị thay thế cho URI được yêu cầu ban đầu; . Các yêu cầu trong tương lai CÓ THỂ chỉ định URI Nội dung-Vị trí làm URI yêu cầu nếu mong muốn là xác định nguồn của thực thể cụ thể đó

Bộ đệm không thể cho rằng một thực thể có Vị trí nội dung khác với URI được sử dụng để truy xuất nó có thể được sử dụng để phản hồi các yêu cầu sau này trên URI Vị trí nội dung đó. Tuy nhiên, Nội dung- Vị trí có thể được sử dụng để phân biệt giữa nhiều thực thể được truy xuất từ ​​một tài nguyên được yêu cầu duy nhất, như được mô tả trong phần 13. 6

Nếu Vị trí nội dung là một URI tương đối, thì URI tương đối được diễn giải tương ứng với URI yêu cầu

Ý nghĩa của tiêu đề Vị trí nội dung trong các yêu cầu PUT hoặc POST không được xác định;

14. 15 Nội dung-MD5

Trường tiêu đề thực thể Content-MD5, như được định nghĩa trong RFC 1864 [23], là thông báo MD5 của thực thể-thân nhằm mục đích cung cấp kiểm tra tính toàn vẹn thông báo từ đầu đến cuối (MIC) của thực thể-thân. (Ghi chú. MIC tốt cho việc phát hiện sửa đổi ngẫu nhiên của cơ thể thực thể trong quá trình vận chuyển, nhưng không phải là bằng chứng chống lại các cuộc tấn công độc hại. )

       Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,
               text/html;level=2;q=0.4, */*;q=0.5
6

Trường tiêu đề Nội dung-MD5 CÓ THỂ được tạo bởi máy chủ gốc hoặc máy khách để hoạt động như một kiểm tra tính toàn vẹn của phần thân thực thể. Chỉ máy chủ gốc hoặc máy khách CÓ THỂ tạo trường tiêu đề Content-MD5; . Bất kỳ người nhận nào của phần thân thực thể, bao gồm cổng và proxy, CÓ THỂ kiểm tra xem giá trị thông báo trong trường tiêu đề này có khớp với giá trị của phần thân thực thể như đã nhận không

Thông báo MD5 được tính toán dựa trên nội dung của nội dung thực thể, bao gồm bất kỳ mã hóa nội dung nào đã được áp dụng, nhưng không bao gồm bất kỳ mã hóa chuyển giao nào được áp dụng cho nội dung thư. Nếu nhận được thư bằng mã hóa truyền, thì mã hóa đó PHẢI được xóa trước khi kiểm tra giá trị Nội dung-MD5 đối với thực thể nhận được

Điều này dẫn đến kết quả là bản tóm tắt được tính toán trên các octet của thực thể-thân chính xác như và theo thứ tự mà chúng sẽ được gửi nếu không áp dụng mã hóa chuyển giao

HTTP mở rộng RFC 1864 để cho phép tính toán tóm tắt cho các loại phương tiện tổng hợp MIME (e. g. , multipart/* và message/rfc822), nhưng điều này không thay đổi cách tính toán thông báo như đã định nghĩa trong đoạn trước

Có một số hậu quả của việc này. Phần thân thực thể cho các loại hỗn hợp CÓ THỂ chứa nhiều phần thân, mỗi phần có các tiêu đề MIME và HTTP riêng (bao gồm các tiêu đề Content-MD5, Content-Transfer-Encoding và Content-Encoding). Nếu một phần nội dung có tiêu đề Mã hóa chuyển nội dung hoặc Mã hóa nội dung, giả định rằng nội dung của phần nội dung đã được áp dụng mã hóa và phần nội dung được bao gồm trong thông báo Nội dung-MD5 như hiện tại . e. , sau khi ứng dụng. Trường tiêu đề Mã hóa truyền không được phép trong các bộ phận cơ thể

Việc chuyển đổi tất cả các ngắt dòng sang CRLF KHÔNG ĐƯỢC thực hiện trước khi tính toán hoặc kiểm tra thông báo. quy ước ngắt dòng được sử dụng trong văn bản được truyền thực sự PHẢI được giữ nguyên khi tính toán thông báo

       Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,
               text/html;level=2;q=0.4, */*;q=0.5
7

14. 16 Phạm vi nội dung

Tiêu đề thực thể Phạm vi nội dung được gửi cùng với phần thân thực thể để chỉ định vị trí trong phần thân thực thể đầy đủ, phần thân đó sẽ được áp dụng. Đơn vị phạm vi được xác định trong phần 3. 12

       Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,
               text/html;level=2;q=0.4, */*;q=0.5
8
       Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,
               text/html;level=2;q=0.4, */*;q=0.5
9
       text/html;level=1         = 1
       text/html                 = 0.7
       text/plain                = 0.3
0

Tiêu đề NÊN chỉ ra tổng chiều dài của toàn bộ thực thể, trừ khi chiều dài này không xác định hoặc khó xác định. Ký tự dấu hoa thị "*" có nghĩa là độ dài phiên bản không xác định tại thời điểm phản hồi được tạo

Không giống như giá trị byte-ranges-specifier (xem phần 14. 35. 1), thông số kỹ thuật đáp ứng phạm vi byte PHẢI chỉ xác định một phạm vi và PHẢI chứa các vị trí byte tuyệt đối cho cả byte đầu tiên và byte cuối cùng của phạm vi

Thông số phạm vi nội dung byte với thông số phạm vi byte-resp-spec có giá trị vị trí byte cuối cùng nhỏ hơn giá trị vị trí byte đầu tiên của nó hoặc có giá trị độ dài phiên bản nhỏ hơn hoặc bằng giá trị vị trí cuối cùng của nó. . Người nhận thông số phạm vi nội dung byte không hợp lệ PHẢI bỏ qua nó và bất kỳ nội dung nào được truyền cùng với nó

Máy chủ gửi phản hồi với mã trạng thái 416 (Phạm vi được yêu cầu không thỏa mãn) NÊN bao gồm trường Phạm vi nội dung với thông số kỹ thuật phạm vi byte tương ứng là "*". Độ dài phiên bản chỉ định độ dài hiện tại của

tài nguyên đã chọn. Phản hồi với mã trạng thái 206 (Nội dung một phần) KHÔNG ĐƯỢC bao gồm trường Phạm vi nội dung với thông số kỹ thuật phạm vi byte tương ứng là "*"

Ví dụ về các giá trị thông số kỹ thuật phạm vi nội dung byte, giả sử rằng thực thể chứa tổng cộng 1234 byte

       text/html;level=1         = 1
       text/html                 = 0.7
       text/plain                = 0.3
1
       text/html;level=1         = 1
       text/html                 = 0.7
       text/plain                = 0.3
2
       text/html;level=1         = 1
       text/html                 = 0.7
       text/plain                = 0.3
3
       text/html;level=1         = 1
       text/html                 = 0.7
       text/plain                = 0.3
4

Khi một thông báo HTTP bao gồm nội dung của một phạm vi duy nhất (ví dụ: phản hồi cho yêu cầu cho một phạm vi duy nhất hoặc yêu cầu cho một tập hợp các phạm vi trùng nhau mà không có bất kỳ lỗ hổng nào), nội dung này được truyền với Phạm vi nội dung . Ví dụ,

       text/html;level=1         = 1
       text/html                 = 0.7
       text/plain                = 0.3
5

Khi một thông báo HTTP bao gồm nội dung của nhiều phạm vi (ví dụ: phản hồi cho yêu cầu về nhiều phạm vi không chồng chéo), chúng được truyền dưới dạng một thông báo nhiều phần. Loại đa phương tiện được sử dụng cho mục đích này là "multipart/byteranges" như được định nghĩa trong phụ lục 19. 2. Xem phụ lục 19. 6. 3 cho một vấn đề tương thích

Phản hồi cho một yêu cầu cho một phạm vi duy nhất KHÔNG ĐƯỢC gửi bằng loại phương tiện multipart/byteranges. Phản hồi cho một yêu cầu cho nhiều phạm vi, có kết quả là một phạm vi duy nhất, CÓ THỂ được gửi dưới dạng loại phương tiện nhiều phần/byteranges với một phần. Máy khách không thể giải mã thông báo nhiều phần/byterange KHÔNG ĐƯỢC yêu cầu nhiều dải byte trong một yêu cầu

Khi máy khách yêu cầu nhiều phạm vi byte trong một yêu cầu, máy chủ NÊN trả lại chúng theo thứ tự xuất hiện trong yêu cầu

Nếu máy chủ bỏ qua thông số phạm vi byte vì nó không hợp lệ về mặt cú pháp, thì máy chủ NÊN xử lý yêu cầu như thể trường tiêu đề Phạm vi không hợp lệ không tồn tại. (Thông thường, điều này có nghĩa là trả về 200 phản hồi chứa thực thể đầy đủ)

Nếu máy chủ nhận được yêu cầu (không phải là yêu cầu bao gồm trường tiêu đề yêu cầu If- Range) với trường tiêu đề yêu cầu Range không thỏa mãn (nghĩa là tất cả các giá trị thông số kỹ thuật phạm vi byte có giá trị vị trí byte đầu tiên lớn hơn . 4. 17)

       text/html;level=1         = 1
       text/html                 = 0.7
       text/plain                = 0.3
6

14. 17 Loại nội dung

Trường tiêu đề thực thể Kiểu nội dung cho biết loại phương tiện của phần thân thực thể được gửi đến người nhận hoặc, trong trường hợp của phương thức HEAD, loại phương tiện sẽ được gửi nếu yêu cầu là GET

       text/html;level=1         = 1
       text/html                 = 0.7
       text/plain                = 0.3
7

Các loại phương tiện được xác định trong phần 3. 7. Một ví dụ về lĩnh vực này là

       text/html;level=1         = 1
       text/html                 = 0.7
       text/plain                = 0.3
8

Thảo luận thêm về các phương pháp xác định loại phương tiện của một thực thể được cung cấp trong phần 7. 2. 1

Trường tiêu đề chung Ngày đại diện cho ngày và thời gian bắt đầu gửi thư, có cùng ngữ nghĩa với ngày gốc trong RFC 822. Giá trị trường là ngày HTTP, như được mô tả trong phần 3. 3. 1;

       text/html;level=1         = 1
       text/html                 = 0.7
       text/plain                = 0.3
9

Một ví dụ là

       image/jpeg                = 0.5
       text/html;level=2         = 0.4
       text/html;level=3         = 0.7
0

Máy chủ gốc PHẢI bao gồm trường tiêu đề Ngày trong tất cả các phản hồi, ngoại trừ những trường hợp này

_______91____92____93

Một tin nhắn đã nhận không có trường tiêu đề Ngày PHẢI được chỉ định bởi người nhận nếu tin nhắn sẽ được người nhận đó lưu vào bộ đệm hoặc được chuyển qua một giao thức yêu cầu Ngày. Việc triển khai HTTP không có đồng hồ KHÔNG ĐƯỢC lưu vào bộ đệm phản hồi mà không xác thực lại chúng sau mỗi lần sử dụng. Bộ đệm HTTP, đặc biệt là bộ đệm dùng chung, NÊN sử dụng một cơ chế, chẳng hạn như NTP [28], để đồng bộ hóa đồng hồ của nó với một tiêu chuẩn bên ngoài đáng tin cậy

Khách hàng chỉ NÊN gửi trường tiêu đề Ngày trong thư bao gồm nội dung thực thể, như trong trường hợp của yêu cầu PUT và POST, và thậm chí trường đó là tùy chọn. Máy khách không có đồng hồ KHÔNG ĐƯỢC gửi trường tiêu đề Ngày trong yêu cầu

Ngày HTTP được gửi trong tiêu đề Ngày KHÔNG NÊN biểu thị ngày và giờ sau khi tạo thư. Nó NÊN thể hiện giá trị gần đúng nhất hiện có của ngày và thời gian tạo thông báo, trừ khi việc triển khai không có phương tiện tạo ngày và giờ chính xác hợp lý. Về lý thuyết, ngày phải đại diện cho thời điểm ngay trước khi thực thể được tạo. Trong thực tế, ngày có thể được tạo bất kỳ lúc nào trong quá trình khởi tạo thông báo mà không ảnh hưởng đến giá trị ngữ nghĩa của nó

14. 18. 1 Vận hành máy chủ gốc không xung nhịp

Một số triển khai máy chủ gốc có thể không có sẵn đồng hồ. Máy chủ gốc không có đồng hồ KHÔNG ĐƯỢC gán giá trị Hết hạn hoặc Lần sửa đổi gần đây nhất cho phản hồi, trừ khi các giá trị này được liên kết với tài nguyên bởi hệ thống hoặc người dùng có đồng hồ đáng tin cậy. CÓ THỂ chỉ định một giá trị Hết hạn đã biết, tại hoặc trước thời điểm cấu hình máy chủ, là trong quá khứ (điều này cho phép "hết hạn trước" các phản hồi mà không lưu trữ các giá trị Hết hạn riêng cho từng tài nguyên)

Trường tiêu đề phản hồi ETag cung cấp giá trị hiện tại của thẻ thực thể cho biến thể được yêu cầu. Các tiêu đề được sử dụng với thẻ thực thể được mô tả trong phần 14. 24, 14. 26 và 14. 44. Thẻ thực thể CÓ THỂ được sử dụng để so sánh với các thực thể khác từ cùng một tài nguyên (xem phần 13. 3. 3)

       image/jpeg                = 0.5
       text/html;level=2         = 0.4
       text/html;level=3         = 0.7
4

ví dụ

       image/jpeg                = 0.5
       text/html;level=2         = 0.4
       text/html;level=3         = 0.7
5

Trường tiêu đề yêu cầu Mong đợi được sử dụng để chỉ ra rằng các hành vi máy chủ cụ thể được yêu cầu bởi máy khách

       image/jpeg                = 0.5
       text/html;level=2         = 0.4
       text/html;level=3         = 0.7
6
       image/jpeg                = 0.5
       text/html;level=2         = 0.4
       text/html;level=3         = 0.7
7

Máy chủ không hiểu hoặc không thể tuân thủ bất kỳ giá trị kỳ vọng nào trong trường Kỳ vọng của yêu cầu PHẢI phản hồi với trạng thái lỗi thích hợp. Máy chủ PHẢI phản hồi với trạng thái 417 (Không mong đợi) nếu không thể đáp ứng bất kỳ kỳ vọng nào hoặc, nếu có các vấn đề khác với yêu cầu, một số trạng thái 4xx khác

Trường tiêu đề này được xác định bằng cú pháp mở rộng để cho phép mở rộng trong tương lai. Nếu máy chủ nhận được yêu cầu chứa trường Kỳ vọng bao gồm tiện ích mở rộng kỳ vọng mà nó không hỗ trợ, thì nó PHẢI phản hồi với trạng thái 417 (Không thành công)

So sánh các giá trị kỳ vọng không phân biệt chữ hoa chữ thường đối với các mã thông báo không được trích dẫn (bao gồm cả mã thông báo 100 tiếp tục) và phân biệt chữ hoa chữ thường đối với các phần mở rộng kỳ vọng chuỗi trích dẫn

Cơ chế Kỳ vọng là hop-by-hop. tức là một HTTP/1. 1 proxy PHẢI trả về trạng thái 417 (Expectation Failed) nếu nhận được yêu cầu với kỳ vọng rằng nó không thể đáp ứng. Tuy nhiên, bản thân tiêu đề yêu cầu Mong đợi là từ đầu đến cuối;

Nhiều HTTP/1 cũ hơn. 0 và HTTP/1. 1 ứng dụng không hiểu tiêu đề Expect

Xem phần 8. 2. 3 để sử dụng trạng thái 100 (tiếp tục)

Trường tiêu đề thực thể Hết hạn cung cấp ngày/giờ mà sau đó phản hồi được coi là cũ. Thông thường, một mục nhập bộ đệm cũ có thể không được trả về bởi bộ đệm (bộ đệm proxy hoặc bộ đệm tác nhân người dùng) trừ khi nó được xác thực lần đầu với máy chủ gốc (hoặc với bộ đệm trung gian có bản sao mới của thực thể). Xem phần 13. 2 để thảo luận thêm về mô hình hết hạn

Sự hiện diện của trường Hết hạn không ngụ ý rằng tài nguyên ban đầu sẽ thay đổi hoặc ngừng tồn tại vào, trước hoặc sau thời điểm đó

Định dạng là ngày và giờ tuyệt đối như được xác định bởi HTTP-date trong phần 3. 3. 1;

       image/jpeg                = 0.5
       text/html;level=2         = 0.4
       text/html;level=3         = 0.7
8

Một ví dụ về việc sử dụng nó là

       image/jpeg                = 0.5
       text/html;level=2         = 0.4
       text/html;level=3         = 0.7
9
       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
00

HTTP/1. 1 máy khách và bộ đệm PHẢI xử lý các định dạng ngày không hợp lệ khác, đặc biệt bao gồm giá trị "0", như trong quá khứ (i. e. , "đã hết hạn")

Để đánh dấu phản hồi là "đã hết hạn", máy chủ gốc gửi Ngày hết hạn bằng với giá trị tiêu đề Ngày. (Xem quy tắc tính thời hạn ở mục 13. 2. 4. )

Để đánh dấu phản hồi là "không bao giờ hết hạn", máy chủ gốc gửi Ngày hết hạn khoảng một năm kể từ thời điểm phản hồi được gửi. HTTP/1. 1 máy chủ KHÔNG NÊN gửi Ngày hết hạn hơn một năm trong tương lai

Sự hiện diện của trường tiêu đề Hết hạn với giá trị ngày của một thời điểm nào đó trong tương lai trên một phản hồi mà theo mặc định là không thể lưu vào bộ nhớ đệm cho biết rằng phản hồi có thể lưu vào bộ đệm, trừ khi được chỉ định khác bởi trường tiêu đề Kiểm soát bộ đệm (phần 14. 9)

Trường From request-header, nếu được cung cấp, NÊN chứa địa chỉ e-mail Internet cho người dùng con người kiểm soát tác nhân người dùng yêu cầu. Địa chỉ NÊN có thể sử dụng được bằng máy, như được định nghĩa bởi "hộp thư" trong RFC 822 [9] được cập nhật bởi RFC 1123 [8]

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
01

Một ví dụ là

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
02

Trường tiêu đề này CÓ THỂ được sử dụng cho mục đích ghi nhật ký và như một phương tiện để xác định nguồn yêu cầu không hợp lệ hoặc không mong muốn. Nó KHÔNG NÊN được sử dụng như một hình thức bảo vệ truy cập không an toàn. Giải thích trường này là yêu cầu đang được thực hiện thay mặt cho người được đưa ra, người chịu trách nhiệm về phương pháp được thực hiện. Đặc biệt, các tác nhân rô-bốt NÊN bao gồm tiêu đề này để người chịu trách nhiệm vận hành rô-bốt có thể được liên hệ nếu xảy ra sự cố ở đầu nhận

Địa chỉ e-mail Internet trong trường này CÓ THỂ tách biệt với máy chủ Internet đã đưa ra yêu cầu. Ví dụ: khi yêu cầu được chuyển qua proxy, địa chỉ của nhà phát hành ban đầu NÊN được sử dụng

Khách hàng KHÔNG NÊN gửi trường tiêu đề Từ mà không có sự chấp thuận của người dùng, vì nó có thể xung đột với lợi ích riêng tư của người dùng hoặc chính sách bảo mật của trang web của họ. Chúng tôi thực sự khuyên người dùng có thể tắt, bật và sửa đổi giá trị của trường này bất kỳ lúc nào trước khi yêu cầu

Trường tiêu đề yêu cầu Máy chủ chỉ định máy chủ Internet và số cổng của tài nguyên được yêu cầu, như được lấy từ URI ban đầu do người dùng hoặc tài nguyên giới thiệu cung cấp (thường là URL HTTP,

như được mô tả trong phần 3. 2. 2). Giá trị trường Máy chủ PHẢI thể hiện quyền đặt tên của máy chủ gốc hoặc cổng được cung cấp bởi URL gốc. Điều này cho phép máy chủ gốc hoặc cổng phân biệt giữa các URL mơ hồ bên trong, chẳng hạn như URL "/" gốc của máy chủ cho nhiều tên máy chủ trên một địa chỉ IP

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
03

"Máy chủ" không có bất kỳ thông tin cổng theo sau nào có nghĩa là cổng mặc định cho dịch vụ được yêu cầu (e. g. , "80" cho URL HTTP). Ví dụ: một yêu cầu trên máy chủ gốc sẽ bao gồm đúng cách

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
04

Máy khách PHẢI bao gồm trường tiêu đề Máy chủ trong tất cả HTTP/1. 1 tin nhắn yêu cầu. Nếu URI được yêu cầu không bao gồm tên máy chủ Internet cho dịch vụ được yêu cầu, thì trường tiêu đề Máy chủ PHẢI được cung cấp với một giá trị trống. Một HTTP/1. 1 proxy PHẢI đảm bảo rằng mọi thông báo yêu cầu mà nó chuyển tiếp đều chứa trường tiêu đề Máy chủ thích hợp xác định dịch vụ được proxy yêu cầu. Tất cả HTTP/1 dựa trên Internet. 1 máy chủ PHẢI phản hồi bằng mã trạng thái 400 (Yêu cầu không hợp lệ) cho bất kỳ HTTP/1 nào. 1 thông báo yêu cầu thiếu trường tiêu đề Máy chủ lưu trữ

Xem phần 5. 2 và 19. 6. 1. 1 đối với các yêu cầu khác liên quan đến Máy chủ

Trường tiêu đề yêu cầu If-Match được sử dụng với một phương thức để biến nó thành điều kiện. Khách hàng có một hoặc nhiều thực thể đã lấy trước đó từ tài nguyên có thể xác minh rằng một trong những thực thể đó là hiện tại bằng cách bao gồm danh sách các thẻ thực thể được liên kết của chúng trong trường tiêu đề If-Match. Các thẻ thực thể được định nghĩa trong phần 3. 11. Mục đích của tính năng này là cho phép cập nhật thông tin được lưu trong bộ nhớ cache một cách hiệu quả với số lượng chi phí giao dịch tối thiểu. Nó cũng được sử dụng, khi cập nhật các yêu cầu, để ngăn chặn việc vô tình sửa đổi phiên bản sai của tài nguyên. Trong trường hợp đặc biệt, giá trị "*" khớp với bất kỳ thực thể hiện tại nào của tài nguyên

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
05

Nếu bất kỳ thẻ thực thể nào khớp với thẻ thực thể của thực thể sẽ được trả về trong phản hồi cho một yêu cầu GET tương tự (không có tiêu đề If-Match) trên tài nguyên đó hoặc nếu "*" được cung cấp

và bất kỳ thực thể hiện tại nào tồn tại cho tài nguyên đó, thì máy chủ CÓ THỂ thực hiện phương thức được yêu cầu như thể trường tiêu đề If-Match không tồn tại

Máy chủ PHẢI sử dụng chức năng so sánh mạnh (xem phần 13. 3. 3) để so sánh các thẻ thực thể trong If-Match

Nếu không có thẻ thực thể nào phù hợp hoặc nếu "*" được cung cấp và không có thực thể hiện tại nào tồn tại, thì máy chủ KHÔNG ĐƯỢC thực hiện phương thức được yêu cầu và PHẢI trả về phản hồi 412 (Điều kiện tiên quyết không thành công). Hành vi này hữu ích nhất khi máy khách muốn ngăn phương pháp cập nhật, chẳng hạn như PUT, sửa đổi tài nguyên đã thay đổi kể từ lần cuối máy khách truy xuất nó

Nếu yêu cầu, không có trường tiêu đề If-Match, dẫn đến bất kỳ điều gì khác ngoài trạng thái 2xx hoặc 412, thì tiêu đề If-Match PHẢI được bỏ qua

Ý nghĩa của "If-Match. *" là phương thức NÊN được thực hiện nếu biểu diễn được chọn bởi máy chủ gốc (hoặc bởi bộ đệm, có thể sử dụng cơ chế Vary, xem phần 14. 44) tồn tại và KHÔNG ĐƯỢC thực hiện nếu biểu diễn không tồn tại

Một yêu cầu nhằm cập nhật một tài nguyên (e. g. , PUT) CÓ THỂ bao gồm trường tiêu đề If-Match để báo hiệu rằng phương thức yêu cầu KHÔNG ĐƯỢC áp dụng nếu thực thể tương ứng với giá trị If-Match (một thẻ thực thể) không còn là đại diện của tài nguyên đó. Điều này cho phép người dùng chỉ ra rằng họ không muốn yêu cầu thành công nếu tài nguyên đã bị thay đổi mà họ không biết. ví dụ

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
06

Kết quả của một yêu cầu có cả trường tiêu đề If-Match và trường tiêu đề If-None-Match hoặc If-Modified-Since không được xác định bởi thông số kỹ thuật này

14. 25 Nếu-Đã Sửa-Từ

Trường tiêu đề yêu cầu If-Modified-Since được sử dụng với một phương thức để biến nó thành điều kiện. nếu biến thể được yêu cầu chưa được sửa đổi kể từ thời điểm được chỉ định trong trường này, thì một thực thể sẽ không được trả về từ máy chủ;

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
07

Một ví dụ về lĩnh vực này là

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
08

Phương thức GET có tiêu đề If-Modified-Since và không có tiêu đề Phạm vi yêu cầu thực thể được xác định chỉ được chuyển nếu nó đã được sửa đổi kể từ ngày được cung cấp bởi tiêu đề If-Modified-Since. Thuật toán để xác định điều này bao gồm các trường hợp sau

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
09
       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
10____111

Mục đích của tính năng này là cho phép cập nhật thông tin được lưu trong bộ nhớ cache một cách hiệu quả với số lượng chi phí giao dịch tối thiểu

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
12
       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
13
       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
14
       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
15
       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
16

Kết quả của một yêu cầu có cả trường tiêu đề If-Modified-Since và trường tiêu đề If-Match hoặc If-Unmodified-Since không được xác định bởi thông số kỹ thuật này

14. 26 Nếu-Không-Khớp

Trường tiêu đề yêu cầu If-None-Match được sử dụng với một phương thức để biến nó thành điều kiện. Khách hàng có một hoặc nhiều thực thể đã lấy trước đó từ tài nguyên có thể xác minh rằng không có thực thể nào trong số đó là hiện tại bằng cách đưa danh sách các thẻ thực thể được liên kết của chúng vào trường tiêu đề If-None-Match. Mục đích của tính năng này là cho phép cập nhật thông tin được lưu trong bộ nhớ cache một cách hiệu quả với số lượng chi phí giao dịch tối thiểu. Nó cũng được sử dụng để ngăn chặn một phương pháp (e. g. PUT) do vô tình sửa đổi tài nguyên hiện có khi khách hàng tin rằng tài nguyên đó không tồn tại

Trong trường hợp đặc biệt, giá trị "*" khớp với bất kỳ thực thể hiện tại nào của tài nguyên

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
17

Nếu bất kỳ thẻ thực thể nào khớp với thẻ thực thể của thực thể sẽ được trả về trong phản hồi cho một yêu cầu GET tương tự (không có tiêu đề If-None-Match) trên tài nguyên đó hoặc nếu "*" được cung cấp và bất kỳ thẻ hiện tại nào . Thay vào đó, nếu phương thức yêu cầu là GET hoặc HEAD, thì máy chủ NÊN phản hồi bằng phản hồi 304 (Không được sửa đổi), bao gồm các trường tiêu đề liên quan đến bộ đệm (đặc biệt là ETag) của một trong các thực thể phù hợp. Đối với tất cả các phương thức yêu cầu khác, máy chủ PHẢI phản hồi với trạng thái 412 (Điều kiện tiên quyết không thành công)

Xem phần 13. 3. 3 để biết các quy tắc về cách xác định xem hai thẻ thực thể có khớp không. Hàm so sánh yếu chỉ có thể được sử dụng với các yêu cầu GET hoặc HEAD

Nếu không có thẻ thực thể nào phù hợp, thì máy chủ CÓ THỂ thực hiện phương pháp được yêu cầu như thể trường tiêu đề If-None-Match không tồn tại, nhưng cũng PHẢI bỏ qua bất kỳ (các) trường tiêu đề If-Modified-Since trong yêu cầu. Nghĩa là, nếu không có thẻ thực thể nào khớp, thì máy chủ KHÔNG ĐƯỢC trả về phản hồi 304 (Không được sửa đổi)

Nếu yêu cầu, không có trường tiêu đề If-None-Match, dẫn đến bất kỳ điều gì khác ngoài trạng thái 2xx hoặc 304, thì tiêu đề If-None-Match PHẢI được bỏ qua. (Xem mục 13. 3. 4 để thảo luận về hành vi của máy chủ khi cả If-Modified-Since và If-None-Match xuất hiện trong cùng một yêu cầu. )

Ý nghĩa của "If-None-Match. *" là phương thức KHÔNG ĐƯỢC thực hiện nếu biểu diễn được chọn bởi máy chủ gốc (hoặc bởi bộ đệm, có thể sử dụng cơ chế Vary, xem phần 14. 44) tồn tại và NÊN được thực hiện nếu biểu diễn không tồn tại. Tính năng này nhằm mục đích hữu ích trong việc ngăn chặn các cuộc đua giữa các hoạt động PUT

ví dụ

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
18

Kết quả của một yêu cầu có cả trường tiêu đề If-None-Match và trường tiêu đề If-Match hoặc If-Unmodified-Since không được xác định bởi thông số kỹ thuật này

Nếu một máy khách có một phần bản sao của một thực thể trong bộ đệm của nó và muốn có một bản sao cập nhật của toàn bộ thực thể trong bộ đệm của nó, thì nó có thể sử dụng tiêu đề yêu cầu Phạm vi với một GET có điều kiện (sử dụng một trong hai hoặc cả hai . ) Tuy nhiên, nếu điều kiện không thành công do thực thể đã bị sửa đổi, thì máy khách sẽ phải thực hiện yêu cầu thứ hai để lấy toàn bộ phần thân thực thể hiện tại

Tiêu đề If-Range cho phép khách hàng "đoản mạch" yêu cầu thứ hai. Một cách không chính thức, ý nghĩa của nó là `nếu thực thể không thay đổi, hãy gửi cho tôi (các) phần mà tôi đang thiếu;

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
19

Nếu khách hàng không có thẻ thực thể cho một thực thể, nhưng có ngày Sửa đổi lần cuối, thì khách hàng CÓ THỂ sử dụng ngày đó trong tiêu đề Phạm vi Nếu. (Máy chủ có thể phân biệt giữa ngày HTTP hợp lệ và bất kỳ dạng thẻ thực thể nào bằng cách kiểm tra không quá hai ký tự. ) Tiêu đề Phạm vi chỉ NÊN được sử dụng cùng với tiêu đề Phạm vi và PHẢI được bỏ qua nếu yêu cầu không bao gồm tiêu đề Phạm vi hoặc nếu máy chủ không hỗ trợ hoạt động phạm vi phụ

Nếu thẻ thực thể được cung cấp trong tiêu đề Phạm vi nếu khớp với thẻ thực thể hiện tại cho thực thể, thì máy chủ NÊN cung cấp phạm vi phụ được chỉ định của thực thể bằng cách sử dụng phản hồi 206 (Nội dung một phần). Nếu thẻ thực thể không khớp, thì máy chủ NÊN trả lại toàn bộ thực thể bằng phản hồi 200 (OK)

14. 28 Nếu-Không Sửa-Từ

Trường tiêu đề yêu cầu If-Unmodified-Since được sử dụng với một phương thức để biến nó thành điều kiện. Nếu tài nguyên được yêu cầu chưa được sửa đổi kể từ thời điểm được chỉ định trong trường này, thì máy chủ NÊN thực hiện thao tác được yêu cầu như thể không có tiêu đề If-Unmodified-Since

Nếu biến thể được yêu cầu đã được sửa đổi kể từ thời điểm được chỉ định, thì máy chủ KHÔNG ĐƯỢC thực hiện thao tác được yêu cầu và PHẢI trả về 412 (Điều kiện tiên quyết không thành công)

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
20

Một ví dụ về lĩnh vực này là

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
21

Nếu yêu cầu bình thường (i. e. , không có tiêu đề If-Unmodified-Since) sẽ dẫn đến bất kỳ kết quả nào khác ngoài trạng thái 2xx hoặc 412, tiêu đề If-Unmodified-Since NÊN được bỏ qua

Nếu ngày được chỉ định không hợp lệ, tiêu đề sẽ bị bỏ qua

Kết quả của một yêu cầu có cả trường tiêu đề If-Unmodified-Since và trường tiêu đề If-None-Match hoặc If-Modified-Since không được xác định bởi thông số kỹ thuật này

14. 29 Sửa đổi lần cuối

Trường tiêu đề thực thể được sửa đổi lần cuối cho biết ngày và giờ mà máy chủ gốc cho rằng biến thể được sửa đổi lần cuối

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
22

Một ví dụ về việc sử dụng nó là

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
23

Ý nghĩa chính xác của trường tiêu đề này phụ thuộc vào việc triển khai máy chủ gốc và bản chất của tài nguyên gốc. Đối với các tệp, đó có thể chỉ là lần sửa đổi cuối cùng của hệ thống tệp. Đối với các thực thể có các bộ phận được bao gồm động, đây có thể là lần sửa đổi gần đây nhất trong tập hợp các lần sửa đổi lần cuối cho các bộ phận cấu thành của nó. Đối với cổng cơ sở dữ liệu, đó có thể là dấu thời gian cập nhật cuối cùng của bản ghi. Đối với các đối tượng ảo, đây có thể là lần cuối cùng trạng thái bên trong thay đổi

Máy chủ gốc KHÔNG ĐƯỢC gửi ngày Sửa đổi lần cuối muộn hơn thời gian gửi tin nhắn của máy chủ. Trong những trường hợp như vậy, khi lần sửa đổi cuối cùng của tài nguyên sẽ chỉ ra một thời điểm nào đó trong tương lai, máy chủ PHẢI thay thế ngày đó bằng ngày bắt đầu thông báo

Máy chủ gốc NÊN lấy giá trị Lần sửa đổi gần nhất của thực thể càng gần với thời điểm nó tạo ra giá trị Ngày của phản hồi càng tốt. Điều này cho phép người nhận đánh giá chính xác thời gian sửa đổi của thực thể, đặc biệt nếu thực thể thay đổi gần thời điểm phản hồi được tạo

HTTP/1. 1 máy chủ NÊN gửi Sửa đổi lần cuối bất cứ khi nào khả thi

Trường tiêu đề phản hồi Vị trí được sử dụng để chuyển hướng người nhận đến một vị trí khác với URI Yêu cầu để hoàn thành yêu cầu hoặc nhận dạng tài nguyên mới. Đối với phản hồi 201 (Đã tạo), Vị trí là vị trí của tài nguyên mới được tạo theo yêu cầu. Đối với phản hồi 3xx, vị trí NÊN cho biết URI ưa thích của máy chủ để tự động chuyển hướng đến tài nguyên. Giá trị trường bao gồm một URI tuyệt đối duy nhất

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
24

Một ví dụ là

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
25
       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
26

14. 31 Chuyển tiếp tối đa

Trường Max-Forwards request-header cung cấp một cơ chế với TRACE (phần 9. 8) và TÙY CHỌN (phần 9. 2) các phương pháp giới hạn số lượng proxy hoặc cổng có thể chuyển tiếp yêu cầu đến máy chủ gửi đến tiếp theo. Điều này có thể hữu ích khi khách hàng đang cố gắng theo dõi một chuỗi yêu cầu dường như bị lỗi hoặc lặp lại ở giữa chuỗi

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
27

Giá trị Chuyển tiếp tối đa là một số nguyên thập phân cho biết số lần còn lại mà thông báo yêu cầu này có thể được chuyển tiếp

Mỗi người nhận proxy hoặc cổng của yêu cầu TRACE hoặc OPTIONS chứa trường tiêu đề Max-Forwards PHẢI kiểm tra và cập nhật giá trị của nó trước khi chuyển tiếp yêu cầu. Nếu giá trị nhận được bằng không (0), người nhận KHÔNG ĐƯỢC chuyển tiếp yêu cầu; . Nếu giá trị Chuyển tiếp tối đa nhận được lớn hơn 0, thì thư được chuyển tiếp PHẢI chứa trường Chuyển tiếp tối đa được cập nhật với giá trị giảm đi một (1)

Trường tiêu đề Max-Forwards CÓ THỂ bị bỏ qua đối với tất cả các phương pháp khác được xác định bởi thông số kỹ thuật này và đối với bất kỳ phương pháp mở rộng nào mà nó không được gọi một cách rõ ràng như một phần của định nghĩa phương pháp đó

Trường Pragma general-header được sử dụng để bao gồm các chỉ thị triển khai cụ thể có thể áp dụng cho bất kỳ người nhận nào trong chuỗi yêu cầu/phản hồi. Tất cả các chỉ thị pragma chỉ định hành vi tùy chọn từ quan điểm của giao thức;

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
28

Khi lệnh no-cache xuất hiện trong một thông báo yêu cầu, một ứng dụng NÊN chuyển tiếp yêu cầu tới máy chủ gốc ngay cả khi nó có một bản sao được lưu trong bộ nhớ cache của những gì đang được yêu cầu. Chỉ thị pragma này có cùng ngữ nghĩa với chỉ thị bộ nhớ cache không có bộ đệm (xem phần 14. 9) và được định nghĩa ở đây để tương thích ngược với HTTP/1. 0. Máy khách NÊN bao gồm cả hai trường tiêu đề khi yêu cầu không có bộ đệm được gửi đến máy chủ không được biết đến là HTTP/1. 1 tuân thủ

Chỉ thị Pragma PHẢI được chuyển qua ứng dụng proxy hoặc cổng, bất kể tầm quan trọng của chúng đối với ứng dụng đó, vì chỉ thị có thể được áp dụng cho tất cả người nhận dọc theo chuỗi yêu cầu/phản hồi. Không thể chỉ định pragma cho một người nhận cụ thể;

HTTP/1. 1 bộ đệm NÊN xử lý "Pragma. no-cache" như thể khách hàng đã gửi "Cache-Control. không có bộ đệm". Không có chỉ thị Pragma mới nào được xác định trong HTTP

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
29

14. 33 Proxy-Xác thực

Trường tiêu đề phản hồi Proxy-Authenticate PHẢI được đưa vào như một phần của phản hồi 407 (Yêu cầu xác thực proxy). Giá trị trường bao gồm một thách thức cho biết lược đồ xác thực và các tham số áp dụng cho proxy cho URI yêu cầu này

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]
30

Quá trình xác thực truy cập HTTP được mô tả trong "Xác thực HTTP. Xác thực quyền truy cập cơ bản và thông báo" [43]. Các tác nhân người dùng nên đặc biệt cẩn thận khi phân tích giá trị trường WWW- Xác thực vì nó có thể chứa nhiều thách thức hoặc nếu có nhiều hơn một trường tiêu đề WWW-Authenticate được cung cấp, nội dung của chính thách thức đó có thể chứa dấu phẩy được phân tách

Yêu cầu HTML là gì?

HTTP là gì? . HTTP hoạt động như giao thức yêu cầu-phản hồi giữa máy khách và máy chủ . Thí dụ. Máy khách (trình duyệt) gửi yêu cầu HTTP đến máy chủ; .

HTML có thể gửi Yêu cầu HTTP không?

Cấu trúc máy khách/máy chủ . Biểu mẫu HTML trên trang web không gì khác hơn là một cách thuận tiện, thân thiện với người dùng để định cấu hình yêu cầu HTTP nhằm gửi dữ liệu đến máy chủ . Điều này cho phép người dùng cung cấp thông tin sẽ được gửi trong yêu cầu HTTP.

Yêu cầu và phản hồi HTML là gì?

Yêu cầu/phản hồi HTTP . Máy khách (trình duyệt) gửi yêu cầu HTTP tới web. Một máy chủ web nhận được yêu cầu. Máy chủ chạy một ứng dụng để xử lý yêu cầu. Máy chủ trả về phản hồi HTTP (đầu ra) cho trình duyệt. Communication between clients and servers is done by requests and responses: A client (a browser) sends an HTTP request to the web. A web server receives the request. The server runs an application to process the request. The server returns an HTTP response (output) to the browser.

4 phương thức yêu cầu HTTP là gì?

Các phương thức yêu cầu HTTP được sử dụng phổ biến nhất là GET, POST, PUT, PATCH và DELETE .