HTTP1.1ЭÒéÖÐÎİæ-RFC2616

ʱ¼ä:2008-11-25 À´Ô´:ЭÒé·ÖÎöÂÛ̳ ×÷Õß:sunchaojin µã»÷:´Î
˵Ã÷ ±¾Îĵµ¹æ¶¨ÁË»¥ÁªÍøÉçÇøµÄ±ê×¼×éЭÒ飬²¢ÐèÒªÌÖÂۺͽ¨ÒéÒÔ±ã¸ü¼ÓÍêÉÆ¡£Çë²Î¿¼ »¥ÁªÍø¹Ù·½Ð­Òé±ê×¼£¨STD 1£©À´Á˽ⱾЭÒéµÄ±ê×¼»¯×´Ì¬¡£±¾Ð­Òé²»ÏÞÁ÷´«·¢²¼¡£ °æÈ¨ÉùÃ÷ Copyright £¨C£© The Internet Society £¨1999£©. All Rights Reserved. ÕªÒª ³¬Îı¾´«ÊäЭÒé
¡¡¡¡

˵Ã÷

   ±¾Îĵµ¹æ¶¨ÁË»¥ÁªÍøÉçÇøµÄ±ê×¼×éЭÒ飬²¢ÐèÒªÌÖÂۺͽ¨ÒéÒÔ±ã¸ü¼ÓÍêÉÆ¡£Çë²Î¿¼

“»¥ÁªÍø¹Ù·½Ð­Òé±ê×¼”£¨STD 1£©À´Á˽ⱾЭÒéµÄ±ê×¼»¯×´Ì¬¡£±¾Ð­Òé²»ÏÞÁ÷´«·¢²¼¡£

°æÈ¨ÉùÃ÷

   Copyright £¨C£© The Internet Society £¨1999£©.   All Rights Reserved.

ÕªÒª

³¬Îı¾´«ÊäЭÒ飨HTTP£©ÊÇÒ»ÖÖΪ·Ö²¼Ê½£¬ºÏ×÷ʽ£¬³¬Ã½ÌåÐÅϢϵͳ¡£ËüÊÇÒ»ÖÖͨÓõģ¬ÎÞ״̬£¨stateless£©µÄЭÒ飬³ýÁËÓ¦ÓÃÓÚ³¬Îı¾´«ÊäÍ⣬ËüÒ²¿ÉÒÔÓ¦ÓÃÓÚÖîÈçÃû³Æ·þÎñÆ÷ºÍ·Ö²¼¶ÔÏó¹ÜÀíϵͳ֮ÀàµÄϵͳ£¬Õâ¿ÉÒÔͨ¹ýÀ©Õ¹ËüµÄÇëÇó·½·¨£¬´íÎó´úÂëºÍ±¨Í·[47]À´ÊµÏÖ¡£HTTPµÄÒ»¸öÌØµãÊÇÊý¾Ý±íÏÖÐÎʽÊÇ¿ÉÊäÈëµÄºÍ¿ÉЭÉÌÐԵģ¬Õâ¾ÍÔÊÐíϵͳÄܱ»½¨Á¢¶ø¶ÀÁ¢ÓÚÊý¾Ý´«Êä¡£ 

HTTPÔÚ1990ÄêWWWÈ«ÇòÐÅÏ¢¸Õ¸ÕÆð²½µÄʱºò¾ÍµÃµ½ÁËÓ¦Óᣱ¾ËµÃ÷ÊéÏêϸ²ûÊöÁËHTTP/1.1 ЭÒ飬ÊÇRFC 2068µÄÐÞ¶©°æ[33]¡£

Ŀ¼£¨ÂÔ£©

1 ÒýÂÛ
1.1 Ä¿µÄ
³¬Îı¾´«ÊäЭÒ飨HTTP£©ÊÇÒ»ÖÖΪ·Ö²¼Ê½£¬ºÏ×÷ʽ£¬¶àýÌåÐÅϢϵͳ·þÎñ£¬ÃæÏòÓ¦ÓòãµÄ ЭÒé¡£ÔÚ1990ÄêWWWÈ«ÇòÐÅÏ¢¸Õ¸ÕÆð²½µÄʱºòHTTP¾ÍµÃµ½ÁËÓ¦Óá£HTTPµÄµÚÒ»¸ö°æ±¾½Ð×öHTTP/0.9,ÊÇÒ»ÖÖΪ»¥ÁªÍøÔ­Ê¼Êý¾Ý´«Êä·þÎñµÄ¼òµ¥Ð­Òé¡£ÓÉRFC 1945[6]¶¨ÒåµÄHTTP/1.0½øÒ»²½ÍêÉÆÁËÕâ¸öЭÒé¡£ËüÔÊÐíÏûÏ¢ÒÔÀàËÆMIMEµÄ¸ñʽ´«ËÍ£¬°üÀ¨ÓйØÊý¾Ý´«ÊäµÄά»¤ÐÅÏ¢ºÍ¹ØÓÚÇëÇó/ÏìÓ¦µÄ¾ä·¨ÐÞÕý¡£µ«ÊÇ£¬HTTP/1.0ûÓгä·Ö¿¼Âǵ½·Ö²ã´úÀí£¬»º´æµÄ×÷ÓÃÒÔ¼°¶ÔÎȶ¨Á¬½ÓºÍÐéÄâÖ÷»úµÄÐèÇó¡£²¢ÇÒËæ×Ų»ÍêÉÆµÄÓ¦ÓóÌÐòµÄ¼¤Ôö£¬HTTP/1.0ÆÈÇÐÐèÒªÒ»¸öеİ汾,ÒÔ±ãʹÁ½¸öͨÐÅÓ¦ÓóÌÐòÄܹ»È·¶¨±Ë´ËµÄÕæÊµÐÔÄÜ¡£

ÕâÀï¹æ¶¨µÄЭÒé½Ð×ö”HTTP/1.1".Õâ¸öЭÒéÓëHTTP/1.0Ïà±È£¬ÒªÇó¸üΪÑϸñ£¬ÒÔÈ·±£¸÷ÏÄܵõ½¿É¿¿ÊµÏÖ¡£

ʵ¼ÊµÄÐÅϢϵͳ³ýÁ˼òµ¥µÄ¼ìË÷Í⣬ҪÇó¸ü¶àµÄ¹¦ÄÜÐÔ£¨functionality£©£¬°üÀ¨²éÕÒ£¨search£©£¬Ç°¶Ë¸üУ¨front-end update£©ºÍ×¢½â£¨annotation£©¡£HTTPÔÊÐí¿ÉÀ©³äµÄ·½·¨¼¯ºÍ±¨Í·¼¯ÒÔָʾÇëÇóµÄÄ¿µÄ[47]¡£ËüÊǽ¨Á¢ÔÚͳһ×ÊÔ´±êʶ·û£¨URI£©[3]ÌṩµÄµØÖ·£¨URL£©[4]ºÍÃû×Ö£¨URN£©ÉÏ[20]£¬ÒÔÖ¸³ö·½·¨Ó¦ÓÃÓÚÄĸö×ÊÔ´µÄ¡£ÏûÏ¢ÒÔÀàËÆÓÚÒ»ÖÖ½Ð×ö¶àÓÃÍ¾ÍøÂçÓʼþÀ©Õ¹£¨MIME£©[7] µÄ»¥ÁªÍøÓʼþµÄ¸ñʽ´«ËÍ¡£

HTTPÒ²ÊÇÓÃÓÚÓû§´úÀíÖ®¼ä¼°´úÀí/Íø¹Øµ½ÆäËûÍøÂçϵͳµÄͨÓÃͨÐÅЭÒ飬ÕâÑùµÄÍøÂçϵͳ¿ÉÄÜÓÉHTTP://www.cnpaf.net/class/smtp' target='_blank'>SMTP[16],NNTP[13],HTTP://www.cnpaf.net/class/ftp' target='_blank'>FTP[18],Gopher[2]ºÍWAIS[10]ЭÒéÖ§³Ö¡£ÕâÑù£¬HTTPÔÊÐí²»Í¬µÄÓ¦ÓóÌÐò¶Ô×ÊÔ´½øÐлù±¾µÄ³¬Ã½Ìå·ÃÎÊ¡£

1.2 񻂗
±¾ÎĵĹؼü´Ê"MUST", "MUST NOT", "REQUIRED", "SHALL","SHALL NOT","SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", ºÍ "OPTIONAL"½«ÓÉRFC 2119[34]½âÊÍ¡£

Ò»¸öÓ¦ÓóÌÐòÈç¹û²»ÄÜÂú×ãЭÒéÌṩµÄÒ»¸ö»ò¶à¸öMUST»òREQUIREDµÈ¼¶µÄÒªÇó£¬ÊDz»·ûºÏÒªÇóµÄ¡£Ò»¸öÓ¦ÓóÌÐòÈç¹ûÂú×ãËùÓÐMUST»òREQUIREDµÈ¼¶ÒÔ¼°ËùÓÐSHOULDµÈ¼¶µÄÒªÇó£¬Ôò±»³ÆÎª·ÇÌõ¼þ×ñÑ­£¨unconditionally compliant£©µÄ£»ÈôÂú×ãËùÓÐMUSTµÈ¼¶µÄÒªÇ󵫲»ÄÜÂú×ãËùÓÐSHOULDµÈ¼¶µÄÒªÇóÔò±»³ÆÎªÌõ¼þ×ñÑ­µÄ£¨conditionally compliant£©¡£

1.3 ÊõÓï
±¾ËµÃ÷Óõ½ÁËÈô¸ÉÊõÓÒÔ±íʾHTTPͨÐÅÖи÷²ÎÓëÕߺͶÔÏó°çÑݵIJ»Í¬½ÇÉ«¡£

Á¬½Ó£¨connection£©

ΪͨÐŶøÔÚÁ½¸ö³ÌÐò¼ä½¨Á¢µÄ´«Êä²ãÐéÄâµç·¡£

ÏûÏ¢£¨message£©

HTTPͨÐÅÖеĻù±¾µ¥Ôª¡£ËüÓÉÒ»¸ö½á¹¹»¯µÄ°Ë±ÈÌØ×Ö½ÚÐòÁÐ×é³É£¬ÓëµÚ4Õ¶¨ÒåµÄ¾ä·¨ÏàÆ¥Å䣬²¢Í¨¹ýÁ¬½ÓµÃµ½´«ËÍ¡£

ÇëÇó£¨request£©

Ò»ÖÖHTTPÇëÇóÏûÏ¢£¬²Î¿´µÚ5յ͍Òå¡£

ÏìÓ¦£¨response£©

Ò»ÖÖHTTPÏìÓ¦ÏûÏ¢£¬²Î¿´µÚ6յ͍Òå¡£

×ÊÔ´£¨resource£©

Ò»ÖÖÍøÂçÊý¾Ý¶ÔÏó»ò·þÎñ£¬¿ÉÒÔÓõÚ3.2½Ú¶¨ÒåµÄURIÖ¸¶¨¡£×ÊÔ´¿ÉÒÔÒÔ¶àÖÖ±íÏÖ·½Ê½£¨ÀýÈç¶àÖÖÓïÑÔ£¬Êý¾Ý¸ñʽ£¬´óСºÍ·Ö±æÂÊ£©»òÕ߸ù¾ÝÆäËü·½Ãæ¶ø¶ø²»Í¬µÄ±íÏÖÐÎʽ¡£

ʵÌ壨entity£©

ʵÌåÊÇÇëÇó»òÏìÓ¦µÄÓÐЧ³ÐÔØÐÅÏ¢¡£Ò»¸öʵÌå°üº¬ÔªÐÅÏ¢ºÍÄÚÈÝ£¬ÔªÐÅÏ¢ÒÔʵÌåÍ·Óò£¨entity-header field£©ÐÎʽ±íʾ£¬ÄÚÈÝÒÔÏûÏ¢Ö÷Ì壨entity-body£©ÐÎʽ±íʾ¡£ÔÚµÚ7½ÚÏêÊö¡£

±íÏÖÐÎʽ £¨representation£©

Ò»¸öÏìÓ¦°üº¬µÄʵÌåÊÇÓÉÄÚÈÝЭÉÌ£¨content negotiation£©¾ö¶¨µÄ¡£ÈçµÚ12ÕÂËùÊö¡£ÓпÉÄÜ´æÔÚÒ»¸öÌØ¶¨µÄÏìӦ״̬Âë¶ÔÓ¦¶à¸ö±íÏÖÐÎʽ¡£

ÄÚÈÝЭÉÌ£¨content negotiation£©

µ±·þÎñÒ»¸öÇëÇóʱѡÔñ×ÊÔ´µÄÒ»ÖÖÊʵ±µÄ±íʾÐÎʽµÄ»úÖÆ£¨mechanism£©£¬ÈçµÚ12½ÚËùÊö¡£ÈκÎÏìÓ¦ÀïʵÌåµÄ±íÏÖÐÎʽ¶¼ÊÇ¿ÉЭÉ̵썰üÀ¨³ö´íÏìÓ¦£©.

±äÁ¿£¨variant£©

ÔÚÈκθø¶¨Ê±¿Ì£¬Ò»¸ö×ÊÔ´¶ÔÓ¦µÄ±íÏÖÐÎʽ£¨representation£©¿ÉÒÔÓÐÒ»¸ö»ò¶à¸ö£¨Òë×¢£ºÒ»¸öURIÇëÒ»¸ö×ÊÔ´£¬µ«·µ»ØµÄÊÇ´Ë×ÊÔ´¶ÔÓ¦µÄ±íÏÖÐÎʽ£¬Õâ¸ù¾ÝÄÚÈÝЭÉ̾ö¶¨£©¡£Ã¿¸ö±íÏÖÐÎʽ£¨representation£©±»³Æ×÷Ò»¸ö±äÁ¿¡£Ê¹ÓñäÁ¿Õâ¸öÊõÓï²¢²»ÊÇÒâζ×Å×ÊÔ´£¨resource£©ÊDZØÐëÓÉÄÚÈÝЭÉ̾ö¶¨µÄ.

¿Í»§¶Ë£¨client£©

Ϊ·¢ËÍÇëÇó½¨Á¢Á¬½ÓµÄ³ÌÐò.

Óû§´úÀí£¨user agent£©

³õʼ»¯ÇëÇóµÄ¿Í»§¶Ë³ÌÐò¡£³£¼ûµÄÈçä¯ÀÀÆ÷,±à¼­Æ÷,Ö©Öë£¨ÍøÂç´©Ô½»úÆ÷ÈË£©,»òÆäËûµÄÖÕ¶ËÓû§¹¤¾ß.

·þÎñÆ÷£¨Server£©

·þÎñÆ÷ÊÇÕâÑùÒ»¸öÓ¦ÓóÌÐò£¬ËüͬÒâÇëÇó¶ËµÄÁ¬½Ó£¬²¢·¢ËÍÏìÓ¦£¨response£©¡£Èκθø¶¨µÄ³ÌÐò¶¼ÓпÉÄܼÈ×ö¿Í»§¶ËÓÖ×ö·þÎñÆ÷£»ÎÒÃÇʹÓÃÕâЩÊõÓïÊÇΪÁË˵Ã÷ÌØ¶¨Á¬½ÓÖÐÓ¦ÓóÌÐòËùµ£µ±µÄ½ÇÉ«£¬¶ø²»ÊÇָͨ³£ÒâÒåÉÏÓ¦ÓóÌÐòµÄÄÜÁ¦¡£Í¬Ñù£¬ÈκηþÎñÆ÷¶¼¿ÉÒÔ»ùÓÚÿ¸öÇëÇóµÄÐÔÖʰçÑÝÔ´·þÎñÆ÷£¬´úÀí£¬Íø¹Ø£¬»òÕßËíµÀµÈ½Çɫ֮һ¡£

Ô´·þÎñÆ÷£¨Origin server£©

´æÔÚ×ÊÔ´»òÕß×ÊÔ´ÔÚÆäÉϱ»´´½¨µÄ·þÎñÆ÷£¨server£©±»³ÉΪԴ·þÎñÆ÷£¨origin server£©¡£ 

´úÀí£¨ Proxy£©

´úÀíÊÇÒ»¸öÖмä³ÌÐò£¬Ëü¼Èµ£µ±¿Í»§¶ËµÄ½ÇɫҲµ£µ±·þÎñÆ÷µÄ½ÇÉ«¡£´úÀí´ú±í¿Í»§¶ËÏò·þÎñÆ÷·¢ËÍÇëÇ󡣿ͻ§¶ËµÄÇëÇó¾­¹ý´úÀí£¬»áÔÚ´úÀíÄÚ²¿µÃµ½·þÎñ»òÕß¾­¹ýÒ»¶¨µÄת»»×ªÖÁÆäËû·þÎñÆ÷¡£Ò»¸ö´úÀí±ØÐëÄÜͬʱʵÏÖ±¾¹æ·¶ÖжԿͻ§¶ËºÍ·þÎñÆ÷Ëù×÷µÄÒªÇó¡£Í¸Ã÷´úÀí£¨transparent proxy£©ÐèÒª´úÀíÊÚȨºÍ´úÀíʶ±ð£¬µ«²»ÐÞ¸ÄÇëÇó»òÏìÓ¦¡£·Ç͸Ã÷´úÀí£¨non-transparent  proxy£©ÐèÐÞ¸ÄÇëÇó»òÏìÓ¦£¬ÒÔ±ãΪÓû§´úÀí£¨user agent£©Ìṩ¸½¼Ó·þÎñ£¬¸½¼Ó·þÎñ°üÀ¨×é×¢ÊÍ·þÎñ£¬Ã½ÌåÀàÐÍת»»£¬Ð­Òé¼ò»¯£¬»òÕßÄäÃû¹ýÂ˵ȡ£³ý·Ç͸Ã÷ÐÐΪ»ò·Ç͸Ã÷ÐÐΪ¾­Ã÷È·Ö¸³ö£¬·ñÔò£¬HTTP´úÀí¼ÈÊÇ͸Ã÷´úÀíÒ²ÊÇ·Ç͸Ã÷´úÀí¡£

Íø¹Ø£¨gateway£©

Íø¹ØÆäʵÊÇÒ»¸ö·þÎñÆ÷£¬°çÑÝ×Å´ú±íÆäËü·þÎñÆ÷Ϊ¿Í»§¶ËÌṩ·þÎñµÄÖмäÕß¡£Óë´úÀí£¨proxy£©²»Í¬£¬Íø¹Ø½ÓÊÕÇëÇ󣬷·ðËü¾ÍÊÇÇëÇó×ÊÔ´µÄÔ´·þÎñÆ÷¡£ÇëÇóµÄ¿Í»§¶Ë¿ÉÄܾõ²ì²»µ½ËüÕýÔÚÍ¬Íø¹ØÍ¨ÐÅ¡£

ËíµÀ£¨tunnel£©

ËíµÀÒ²ÊÇÒ»¸öÖмä³ÌÐò£¬ËüÒ»¸öÔÚÁ½¸öÁ¬½ÓÖ®¼ä³äµ±Ã¤Ä¿Öм̣¨blind relay£©µÄÖмä³ÌÐò¡£Ò»µ©ËíµÀ´¦Óڻ״̬£¬Ëü²»Äܱ»ÈÏΪÊÇÕâ´ÎHTTPͨÐŵIJÎÓëÕߣ¬ËäÈ»HTTPÇëÇó¿ÉÄÜÒѾ­°ÑËü³õʼ»¯ÁË¡£µ±Á½¶ËµÄÖмÌÁ¬½Ó¶¼¹Ø±ÕµÄʱºò£¬ËíµÀ²»ÔÙ´æÔÚ¡£

»º´æ£¨cache£©

»º´æÊdzÌÐòÏìÓ¦ÏûÏ¢µÄ±¾µØ´æ´¢¡£»º´æÊÇÒ»¸ö×Óϵͳ£¬¿ØÖÆÏûÏ¢µÄ´æ´¢¡¢È¡»ØºÍɾ³ý¡£»º´æÀï´æ·Å¿É»º´æÏìÓ¦£¨cacheable response£©ÎªµÄÊǼõÉÙ¶Ô½«À´Í¬ÑùÇëÇóµÄÏìӦʱ¼äºÍÍøÂç´ø¿íÏûºÄ¡£ÈÎÒ»¿Í»§¶Ë»ò·þÎñÆ÷¶¼¿ÉÄܺ¬Óлº´æ£¬µ«¸ßËÙ»º´æ²»Äܱ»Ò»¸ö³äµ±ËíµÀ£¨tunnel£©µÄ·þÎñÆ÷ʹÓá£

¿É»º´æ£¨cacheable£©

ÎÒÃÇ¿ÉÒÔ˵ÏìÓ¦£¨response£©Êǿɻº´æµÄ£¬Èç¹ûÒ»¸ö»º´æ£¨cache£©ÎªÁËÏìÓ¦ºó¼ÌÇëÇó¶ø±»ÔÊÐí´æ´¢ÏìÓ¦ÏûÏ¢£¨response message£©µÄ¸±±¾¡£È·¶¨HTTPÏìÓ¦µÄ»º´æÄÜÁ¦£¨cacheability£©ÔÚ13½ÚÖÐÓнéÉÜ¡£¼´Ê¹Ò»¸ö×ÊÔ´£¨resourse£©Êǿɻº´æµÄ£¬Ò²¿ÉÄÜ´æÔÚ»º´æÊÇ·ñÄÜÀûÓûº´æ¸±±¾µÄÔ¼Êø¡£

µÚÒ»Êֵģ¨first-hand£©

Èç¹ûÒ»¸öÏìÓ¦Ö±½Ó´ÓÔ´·þÎñÆ÷»ò¾­¹ýÈô¸É´úÀí£¨proxy£©£¬²¢ÇÒûÓв»±ØÒªµÄÑÓʱ£¬×îºóµ½´ï¿Í»§¶Ë£¬ÄÇôÕâ¸öÏìÓ¦¾ÍÊǵÚÒ»Êֵģ¨first-hand£©¡£

Èç¹ûÏìÓ¦±»Ô´·þÎñÆ÷£¨origin server£©ÑéÖ¤ÊÇÓÐЧÐÔ£¨validity£©µÄ£¬ÄÇôÕâ¸öÏìӦҲͬÑùÊǵÚÒ»Êֵġ£

Ã÷È·¹ýÆÚʱ¼ä£¨explicit expiration time£©     

ÊÇÔ´·þÎñÆ÷Ï£ÍûʵÌ壨entity£©Èç¹ûûÓб»½øÒ»²½ÑéÖ¤£¨validation£©¾Í²»ÒªÔÙ±»»º´æ£¨cache£©·µ»ØµÄʱ¼ä¡£

Æô·¢Ê½¹ýÆÚʱ¼ä£¨heuristic expiration time£©      

µ±Ã»ÓÐÃ÷È·ÖÕֹʱ¼ä£¨explicit expiration time£©¿ÉÀûÓÃʱ£¬ÓÉ»º´æËùÖ¸¶¨µÄÖÕֹʱ¼ä.

ÄêÁ䣨age£©

Ò»¸öÏìÓ¦µÄÄêÁäÊÇ´Ó±»Ô´·þÎñÆ÷·¢ËÍ»ò±»Ô´·þÎñÆ÷³É¹¦È·ÈϵÄʱ¼äµãµ½ÏÖÔÚµÄʱ¼ä¡£

±£ÏÊÊÙÃü£¨freshness lifetime£©

Ò»¸öÏìÓ¦²úÉúµÄʱ¼äµãµ½¹ýÆÚʱ¼äµãÖ®¼äµÄ³¤¶È¡£

±£ÏÊ£¨Fresh£©    

Èç¹ûÒ»¸öÏìÓ¦µÄÄêÁ仹ûÓг¬¹ý±£ÏÊÊÙÃü£¨freshness lifetime£©£¬Ëü¾ÍÊDZ£ÏʵÄ.

³Â¾É£¨Stale£©

Ò»¸öÏìÓ¦µÄÄêÁäÒѾ­³¬¹ýÁËËüµÄ±£ÏÊÊÙÃü£¨freshness lifetime£©£¬¾ÍÊdz¾ɵÄ.

ÓïÒå͸Ã÷£¨semantically transparent£©

»º´æ£¨cache£©¿ÉÄÜ»áÒÔÒ»ÖÖÓïÒâ͸Ã÷£¨semantically transparent£©µÄ·½Ê½¹¤×÷¡£Õâʱ£¬¶ÔÓÚÒ»¸öÌØ¶¨µÄÏìÓ¦£¬Ê¹Óûº´æ¼È²»»á¶ÔÇëÇó¿Í»§¶Ë²úÉúÓ°ÏìÒ²²»»á¶ÔÔ´·þÎñÆ÷²úÉúÓ°Ï죬»º´æµÄʹÓÃÖ»ÊÇΪÁËÌá¸ßÐÔÄÜ¡£µ±»º´æ£¨cache£©¾ßÓÐÓïÒâ͸Ã÷ÐÔʱ£¬¿Í»§¶Ë´Ó»º´æ½ÓÊÕµÄÏìÓ¦¸úÖ±½Ó´ÓÔ´·þÎñÆ÷½ÓÊÕµÄÏìÓ¦ÍêȫһÖ£¨³ýÁËʹÓÃhop-by-hopÍ·Óò£©¡£

ÑéÖ¤Æ÷£¨Validator£©

ÑéÖ¤Æ÷ÆäʵÊÇЭÒéÔªËØ£¨ÀýÈ磺ʵÌåÍ·£¨entity tag£©»ò×îºó¸ü¸Äʱ¼ä£¨last-modified time£©µÈ£©£¬ÕâЩЭÒéÔªËØ±»ÓÃÓÚʶ±ð»º´æÀï±£´æµÄÊý¾Ý£¨¼´»º´æÏÊÇ·ñÊÇÔ´·þÎñÆ÷µÄʵÌåµÄ¸±±¾¡£

ÉÏÓÎ/ÏÂÓΣ¨upstream/downstream£©

ÉÏÓκÍÏÂÓÎÃèÊöÁËÏûÏ¢µÄÁ÷¶¯:ËùÓÐÏûÏ¢¶¼´ÓÉÏÓÎÁ÷µ½ÏÂÓÎ.

ÏòÄÚ/ÏòÍ⣨inbound/outbound£©

ÏòÄÚºÍÏòÍâÖ¸µÄÊÇÏûÏ¢µÄÇëÇóºÍÏìӦ·¾¶:"ÏòÄÚ"¼´"ÒÆÏòÔ´·þÎñÆ÷","ÏòÍâ"¼´"ÒÆÏòÓû§´úÀí£¨user agent£©".

1.4 ×ÜÌå²Ù×÷
HTTPЭÒéÊÇÒ»ÖÖÇëÇó/ÏìӦЭÒé¡£ Óë·þÎñÆ÷½¨Á¢Á¬½Óºó£¬¿Í»§¶ËÒÔÇëÇó·½·¨£¬URIºÍЭÒé°æ±¾ºÅ£¬È»ºó½ô½ÓןúËæÒ»¸öÀàMIME£¨MIME-like£©ÏûÏ¢£¬Õâ¸öÀàMIMEÏûÏ¢°üÀ¨ÇëÇóÐÞÊηû£¬¿Í»§ÐÅÏ¢ºÍ¿ÉÄܵÄÏûÏ¢Ö÷Ìå¡£·þÎñÆ÷ÒÔÒ»¸ö״̬Ðв¢¸úËæÒ»¸öÀàMIME£¨MIME-like£©ÏûÏ¢ÏìÓ¦£¬×´Ì¬Ðаüº¬ÏûÏ¢µÄЭÒé°æ±¾ºÍ³É¹¦³ö´íµÄ״̬Â룬ÀàMIMEÏûÏ¢°üº¬·þÎñÆ÷ÐÅÏ¢£¬ÊµÌåÔªÐÅÏ¢£¬ºÍ¿ÉÄܵÄʵÌå¡£HTTPºÍMIMEÖ®¼äµÄ¹ØÏµÈ總¼19.4½ÚËù²ûÊö¡£

´ó²¿·ÖµÄHTTPͨÐÅÊÇÓÉÓû§´úÀí£¨user agent£©¿ªÊ¼µÄ£¬ÓÉÓ¦Óõ½Ò»¸öÐèÒªÔ´·þÎñÆ÷×ÊÔ´µÄÇëÇ󹹳ɡ£×î¼òµ¥µÄÇéÐΣ¬¿ÉÒÔ¾­Óû§´úÀí£¨UA£©ºÍÔ´·þÎñÆ÷£¨O£©Ö®¼äµÄµ¥Ò»Á¬½Ó£¨v£©Íê³É¡£

ÇëÇóÁ´£¨Request chain£©--------------------- ----------à

Óû§´úÀí£¨UA£©----------------µ¥Ò»Á¬½Ó£¨v£©--------------Ô´·þÎñÆ÷£¨O£©

<---------------------------------------ÏìÓ¦Á´£¨response chain£©

µ±Ò»¸ö»ò¶à¸öÖмäÕßÔÚÇëÇó/ÏìÓ¦Á´ÖгöÏÖµÄʱºò£¬»á³öÏÖ¸ü¸´ÔÓµÄÇéÐΡ£³£¼ûµÄÖмäÕßÓÐÈýÖÖ£º´úÀí£¨proxy£©£¬Íø¹Ø£¨gateway£©ºÍËíµÀ£¨tunnel£©¡£´úÀí£¨proxy£©ÊÇÒ»ÖÖת·¢´úÀí£¨a  forwarding  agent£©£¬Ëü½ÓÊÕ¾ø¶ÔURI£¨absoulute url£¬Ïà¶ÔÓÚÏà¶Ôurl£©ÇëÇó£¬ÖØÐ´È«²¿»ò²¿·ÖÏûÏ¢£¬È»ºó°Ñ¸ñʽ»¯ºóµÄÇëÇó·¢Ë͵½URIÖ¸¶¨µÄ·þÎñÆ÷ÉÏ¡£Íø¹ØÊÇÒ»ÖÖ½ÓÊÕ´úÀí£¨receiving agent£©£¬Ëü³äµ±Ò»¸ö²ã£¨layer£©£¬Õâ¸ö²ãÔÚ·þÎñÆ÷Ö®ÉÏ£¬±ØÒªÊ±Ëü»á°ÑÇëÇó·­Òë³ÉΪϲã·þÎñÆ÷µÄЭÒé¡£ËíµÀ²»¸Ä±äÏûÏ¢¶ø³äµ±Á½¸öÁ¬½ÓÖ®¼äµÄÖм̵㣻ËüÓÃÓÚͨÐÅÐèÒª´©¹ýÖмäÕߣ¨Èç·À»ðǽ£©ÉõÖÁµ±ÖмäÕß²»ÄÜÀí½âÏûÏ¢ÄÚÈݵÄʱºò¡£

ÇëÇóÁ´£¨request chain£©----------------------------------------à

UA-----v-----A-----v-----B-----v-----C------------v-----------------O

 <----------------------------------------ÏìÓ¦Á´£¨response chain£©

ÉÏͼÏÔʾÁËÓû§´úÀí£¨user agent£©ºÍÔ´·þÎñÆ÷Ö®¼äµÄÈý¸öÖмäÕߣ¨A£¬BºÍC£©¡£ÕûÌõÁ´µÄÇëÇó»òÏìÓ¦½«»áͨ¹ýËĸöµ¥¶ÀµÄÁ¬½Ó¡£Õâ¸öÌØÐÔºÜÖØÒª£¬ÒòΪijЩHTTPͨÐÅÑ¡Ïî¿ÉÄÜÖ»ÄÜÓ¦ÓÃÓÚÓë×î½üµÄ·ÇËíµÀÁÚ½ÓµãµÄÁ¬½Ó£¬Ö»ÄÜÓ¦ÓÃÓÚÁ´µÄ¶Ëµã£¨end-point£©µÄÁ¬½Ó£¬»òÕßÄÜÓ¦ÓÃÓÚ´ËÁ´µÄËùÓÐÁ¬½Ó¡£Í¼±í¾¡¹ÜÊÇÏßÐԵģ¬Ã¿¸ö²ÎÓëÕß¿ÉÄÜæÓÚ¶à·ͬʱͨÐÅ¡£ÀýÈ磬B¿ÉÒÔ½ÓÊÕÀ´×Ô²»Í¬ÓÚAµÄÐí¶à¿Í»§µÄÇëÇ󣬲¢ÇÒ£¯»òÕß¿ÉÒÔ°ÑÇëÇóתµ½²»Í¬ÓÚCµÄ·þÎñÆ÷£¬Óë´Ëͬʱ£¬Ëü»¹ÔÚ´¦ÀíAµÄÇëÇó¡£

ÈκηÇËíµÀµÄͨÐųÉÔ±¶¼¿ÉÄÜ»á²ÉÓÃÒ»¸öÄÚ²¿»º´æ£¨cache£©À´´¦ÀíÇëÇó¡£Èç¹ûÑØ×ÅÁ´µÄͨÐųÉÔ±¶ÔÇëÇó²ÉÓÃÁË»º´æÏìÓ¦£¬ÇëÇó/ÏìÓ¦Á´¾Í»á´ó´óËõ¶Ì¡£ÏÂͼ²ûÃ÷ÁËÒ»¸ö×îÖÕÇëÇóÏìÓ¦Á´£¬ÕâÊÇÔÚ¼Ù¶¨BÓµÓÐÒ»¸öÀ´×ÔO£¨Í¨¹ýC£©µÄÒÔǰÇëÇóµÄÏìÓ¦¸±±¾£¬µ«´ËÏìÓ¦ÉÐδ±»UA»òA»º´æ¡£

ÇëÇóÁ´£¨request chain£©---------->

UA-----v----------A-----v-----B-----C----O

<---------ÏìÓ¦Á´ £¨response chain£©

²¢²»ÊÇËùÓеÄÏìÓ¦¶¼ÄÜÓÐЧµØ»º´æ£¬Ò»Ð©ÇëÇó¿ÉÄܺ¬ÓÐÐÞÊηû£¬ÕâЩÐÞÊηû¶Ô»º´æ¶¯×÷ÓÐÌØÊâµÄÒªÇó¡£»º´æ¶¯×÷ºÍ»º´æÏìÓ¦µÄHTTPÐÐΪҪÇó½«ÔÚµÚ13½Ú¶¨Òå¡£

ʵ¼ÊÉÏ£¬Ä¿Ç°ÍòÎ¬ÍøÉÏÓжàÖֽṹºÍÅäÖõĻº´æ£¨cache£©ºÍ´úÀí£¨proxy£©ÕýÔÚ±»Ê¹Óá£ÕâЩϵͳ°üÀ¨½ÚÊ¡´ø¿íµÄ»º´æ´úÀí£¨proxy cache£©£¬¿ÉÒԹ㲥»ò¶àµã´«ËÍ»º´æÊý¾ÝµÄϵͳ£¬Í¨¹ýCD-ROM·ÖÅ仺´æÊý¾Ý×Ó¼¯µÄ»ú¹¹£¬µÈµÈ¡£HTTPϵͳ£¨HTTP system£©»á±»Ó¦ÓÃÓÚ¿í´øÁ¬½ÓµÄÆóÒµ¾ÖÓòÍøÖеÄЭ×÷£¬²¢ÇÒ¿ÉÒÔͨ¹ýPDA½øÐеͺÄÎÞÏߵ쬶ÏÐøÁ¬½ÓµÄ·ÃÎÊ¡£HTTP1.1µÄ×ÚÖ¼ÊÇΪÁËÖ§³Ö¸÷ÖÖ¸÷ÑùµÄÒѾ­²¿ÊðµÄÅäÖã¬Í¬Ê±Òý½øÒ»ÖÖЭÒé½á¹¹£¬ÈÃËüÂú×ãÄÇЩÐèÒª½Ï¸ß¿É¿¿ÐÔ£¬¼´Ê¹²»ÄÜ´ïµ½½Ï¸ß¿É¿¿ÐÔµÄÒªÇó£¬Ò²ÒªÒ²ÈÃËüÖÁÉÙ¿ÉÒÔָʾ¹ÊÕϵÄÍøÂçÓ¦ÓõÄÒªÇó¡£

HTTPͨÐÅͨ³£·¢ÉúÔÚTCP/IPÁ¬½ÓÉÏ¡£Ä¬È϶˿ÚÊÇTCP 80£¬²»¹ýÆäËü¶Ë¿ÚÒ²¿ÉÒÔʹÓá£Õâ²¢²»·Á°­HTTPµÄʵÏÖ±»Ó¦ÓÃÓÚ»¥ÁªÍø£¨internt£©»òÆäËüÍøµÄЭÒéÖ®ÉÏ¡£HTTP½ö½öÆÚÍûµÄÊÇÒ»¸ö¿É¿¿µÄ´«Ê䣨Òë×¢£ºHTTPÒ»°ã½¨Á¢ÔÚ´«Êä²ãЭÒéÖ®ÉÏ£©£»ÈκÎÌṩÕâÖÖ±£Ö¤µÄЭÒé¶¼¿ÉÒÔ±»Ê¹Óã»Ð­Òé´«ÊäÊý¾Ýµ¥Ôª£¨transport data unit£©ÓëHTTP/1.1ÇëÇóºÍÏìÓ¦µÄÏûÏ¢½á¹¹Ö®¼äµÄÓ³ÏóÒѾ­³¬³öÁ˱¾ËµÃ÷ÊéµÄ·¶Î§¡£

´ó²¿·ÖHTTP/1.0µÄʵÏÖ¶¼ÊÇÕë¶Ôÿ¸öÇëÇó/ÏìÓ¦½»»»²úÉúÒ»¸öеÄÁ¬½Ó¡£¶øHTTP/1.1ÖУ¬Ò»¸öÁ¬½Ó¿ÉÒÔ±»ÓÃÓÚÒ»¸ö»ò¸ü¶àÇëÇó/ÏìÓ¦½»»»£¬ËäÈ»Á¬½Ó¿ÉÄÜ»áÒòΪ¸÷ÖÖÔ­ÒòÖжϣ¨¼ûµÚ8.1½Ú£©¡£

2 ·ûºÅϰ¹ßºÍÒ»°ãÓï·¨
2.1 À©³äµÄBNF£¨À©³äµÄ °Í¿ÆË¹-ŵ¶û·¶Ê½£©
±¾Îĵµ¹æ¶¨µÄËùÓлúÖÆ¶¼ÓÃÁ½ÖÖ·½·¨ÃèÊö£ºÉ¢ÎÄÌ壨prose£©ºÍÀàËÆÓÚRFC 822µÄÀ©³äBackus-Naur Form£¨BNF£©¡£ÒªÀí½â±¾¹æ·¶£¬Ê¹ÓÃÕßÐèÊìϤ·ûºÅ±íʾ·¨¡£À©³äBNF½á¹¹ÈçÏ£º

Ãû×Ö£¨name£©=¶¨Ò壨definition£©

Ãû×Ö£¨name£©¾ÍÊÇ´ú±í¹æÔòµÄÃû×Ö£¨Òë×¢£ºÈ磺CRLF£¬DIGITµÈµÈ¶¼ÊǹæÔòÃû£©£¬¹æÔòÃûÀï²»Äܰüº¬“<”ºÍ“>”£¬Í¨¹ýµÈÓںŰѹæÔòÃûºÍ¹æÔò¶¨Ò壨definiation£©·ÖÀ뿪¡£¿Õ°×£¨white space£©ÊÇÓÐÒâÒåµÄ£¬ÒòΪ¿ÉÒÔÓÃËõ½ø£¨indentation£¬Òë×¢£ºËõ½ø¾ÍÊǿհף¬ºóÃæ»á½²µ½LWS£© °Ñ¹æÔò¶¨ÒåÏÔʾ³É¶àÐС£Ä³Ð©»ù±¾¹æÔò£¨basic rule£¬Òë×¢£º2.2½Ú˵Ã÷»ù±¾¹æÔòµÄÓï·¨£©Ê¹Óôóд×Öĸ°üº¬ÔÚ¹æÔò¶¨ÒåÀ ÄãÈçSP£¬LWS£¬HT£¬CRLF£¬DIGIT£¬ALPHA£¬µÈµÈ¡£¼âÀ¨ºÅ¿ÉÒÔ°üº¬ÔÚ¹æÔò¶¨ÒåÀֻҪËüÃǵĴæÔÚÓÐÀûÓÚʶ±ð¹æÔòÃû£¨Òë×¢£ºLWS£¬HTµÈ¶¼ÊǹæÔòÃû£©¡£

“×ÖÃæÎı¾”£¨“literal”£©

×ÖÃæÎı¾£¨literal text£©Á½±ßÓÃÒýºÅ¡£³ý·ÇÉùÃ÷£¬×ÖÃæÎı¾´óСд²»Ãô¸Ð£¨Òë×¢£ºÈ磬HEX = "A" | "B" | "C" | "D" | "E" | "F" | "a" | "b" | "c" | "d" | "e" | "f" | DIGIT ÀïµÄA£¬B,C£¬DµÈµÈ¶¼ÊÇ×ÖÃæÎı¾£¨literal text£©£©¡£

¹æÔò1 | ¹æÔò2

ÓÉÊúÏߣ¨“|”£©·Ö¿ªµÄÔªËØÊÇ¿ÉÑ¡µÄ£¬ÀýÈ磬“yes | no”±íʾyes»òno¶¼ÊǿɽÓÊܵġ£

£¨¹æÔò1 ¹æÔò2£©

ΧÔÚÀ¨ºÅÀïµÄ¶à¸öÔªËØÊÓ×÷Ò»¸öÔªËØ¡£ËùÒÔ£¬“£¨elem £¨foo | bar£© elem£©”µÄ·ûºÏµÄ×Ö·û´®ÊÇ“elem foo elem”ºÍ“elem bar elem”¡£

*¹æÔò

Ç°ÃæµÄ×Ö·û“*”±íÊ¾ÖØ¸´¡£ÍêÕûµÄÐÎʽÊÇ“<n>*<m>ÔªËØ”£¬±íÊ¾ÔªËØÖÁÉÙ³öÏÖ<n>´Î£¬ÖÁ¶à³öÏÖ<m>´Î¡£Ä¬ÈÏÖµÊÇ0ºÍÎÞÇî´ó£¬ËùÒÔ"*£¨ÔªËØ£©"ÔÊÐíÈκÎÊýÖµ£¬°üÀ¨Á㣻"1*ÔªËØ"ÖÁÉÙÐèÒªÒ»´Î£»"1*2element"ÔÊÐíÒ»´Î»òÁ½´Î¡£

[¹æÔò]

·½À¨ºÅÀïÊÇÈÎÑ¡ÔªËØ£»“[foo bar]”Ï൱ÓÚ“*1£¨foo bar£©”¡£

N ¹æÔò

ÌØÊâµÄÖØ¸´£º“<n>£¨ÔªËØ£©”Óë“<n>*<n>£¨ÔªËØ£©”µÈ¼Û£»¾ÍÊÇ˵£¬£¨ÔªËØ£©ÕýºÃ³öÏÖÁË<n>´Î¡£ÕâÑù2DIGITÊÇÒ»¸öÁ½Î»Êý×Ö£¬3ALPHAÊÇÒ»¸öÓÉÈý¸ö×Ö·û×é³ÉµÄ×Ö·û´®¡£

#¹æÔò

ÀàËÆÓÚ“*”£¬½á¹¹“#”ÊÇÓÃÀ´¶¨ÒåһϵÁÐÔªËØµÄ¡£ÍêÕûµÄÐÎʽÊÇ<n>#<m>ÔªËØ£¬±íʾÖÁÉÙ<n>¸öÔªËØ£¬ÖÁ¶à<m>¸öÔªËØ£¬ÔªËØÖ®¼ä±»Ò»¸ö»ò¶à¸ö¶ººÅ£¨“,”£©ÒÔ¼°¿ÉÑ¡µÄÏßÐÔ¿Õ°×£¨LWS£©¸ô¿ªÁË¡£Õâ¾ÍʹµÃ±íʾÁбíÕâÑùµÄÐÎʽ±äµÃ·Ç³£ÈÝÒ×£»Ïñ

£¨ *LWS element£© *£¨ *LWS ","*LWS element £©£©

¾Í¿ÉÒÔ±íʾΪ

1#element 

ÎÞÂÛÔÚÄÄÀïʹÓÃÕâ¸ö½á¹¹£¬¿ÕÔªËØ¶¼ÊÇÔÊÐíµÄ£¬µ«ÊDz»¼ÆÈëÔªËØ³öÏֵĴÎÊý¡£»»¾ä»°Ëµ £¬

“£¨element £©, , £¨element£©  ”ÊÇÔÊÐíµÄ£¬µ«Êǽö½öÊÓΪÁ½¸öÔªËØ¡£Òò´Ë£¬ÔÚÖÁÉÙÐèÒªÒ»¸öÔªËØµÄµØ·½£¬±ØÐë´æÔÚÖÁÉÙÒ»¸ö·Ç¿ÕÔªËØ¡£Ä¬ÈÏÖµÊÇ0ºÍÎÞÇî´ó£¬ÕâÑù£¬“#element”ÔÊÐíÈÎÒâÁã¸ö»ò¶à¸öÔªËØ£»“1# element”ÐèÒªÖÁÉÙÒ»¸ö£»“1#2element”ÔÊÐíÒ»¸ö»òÁ½¸öÔªËØ¡£

£»×¢ÊÍ£¨comment£©

Ó÷ֺÅÒýµ¼×¢ÊÍ¡£

Òþº¬µÄ£¨implied£© *LWS

±¾ËµÃ÷ÊéËùÃèÊöµÄÓï·¨ÊÇ»ùÓÚ×ֵġ£³ý·ÇÌØ±ð×¢Ã÷£¬ÏßÐԿհ׿ɳöÏÖÔÚÈκÎÁ½¸öÏàÁÚ×ÖÖ®¼ä£¨±ê¼Ç£¨token£©»òÒýÓÃ×Ö·û´®£¨quoted-string£©£©£¬ÒÔ¼°ÏàÁÚ×ֺͼä¸ô·ûÖ®¼ä£¬ÕⲢûÓиıäÒ»¸öÓòµÄ½âÊÍ¡£ÈκÎÁ½¸ö±ê¼Ç£¨token£©Ö®¼ä±ØÐëÓÐÖÁÉÙÒ»¸ö·Ö¸î·û£¬·ñÔò½«»á±»Àí½âΪµ¥Ò»±ê¼Ç¡£

 

2.2»ù±¾¹æÔò £¨basic rule£©
ÏÂÃæµÄ¹æÔò¹á´©ÓÚ±¾¹æ·¶µÄÈ«ÎÄ£¬´Ë¹æÔòÃèÊöÁË»ù±¾µÄ½âÎö½á¹¹¡£US-ASCII£¨ÃÀ¹úÐÅÏ¢½»»»±ê×¼Â룩±àÂë×Ö·û¼¯ÊÇÓÉANSI X3.4-1986[21]¶¨ÒåµÄ¡£

       OCTET£¨×Ö½Ú£©    = <ÈÎÒâ°Ë±ÈÌØµÄÊý¾ÝÐòÁÐ>

       CHAR           = <ÈÎÒâASCII×Ö·û£¨asciiÂëÖµ´Ó 0µ½127µÄ×Ö½Ú£©>

       UPALPHA        = <ÈÎÒâ´óд×Öĸ"A"..."Z">

       LOALPHA        = <ÈÎÒâСд×Öĸ"a"..."z">

       ALPHA          = UPALPHA | LOALPHA

       DIGIT          = <ÈÎÒâÊý×Ö0£¬1£¬...9>

       CTL          = <ÈÎÒâ¿ØÖÆ×Ö·û£¨asciiÂëÖµ´Ó0 µ½ 31µÄ×Ö½Ú£©¼°É¾³ý¼üDEL£¨127>

       CR             = <US-ASCII CR, »Ø³µ£¨13£©>

       LF             = <US-ASCII LF, »»Ðзû£¨10£©>

       SP             = <US-ASCII SP, ¿Õ¸ñ£¨32£©>

       HT             = <US-ASCII HT, Ë®Æ½ÖÆ±í £¨9£©>

       <">            = <US-ASCII Ë«ÒýºÅ£¨34£©>

HTTP/1.1½« CR LF µÄÐòÁж¨ÒåΪÈκÎЭÒéÔªËØµÄÐÐβ±êÖ¾£¬µ«Õâ³ýÁËʵÌåÖ÷Ì壨endtity-body£©Í⣨ҪÇó±È½ÏËɵÄÓ¦Óüû¸½Â¼19.3£©¡£ÊµÌåÖ÷Ì壨entity-body£©µÄÐÐβ±êÖ¾ÊÇÓÉËüµÄ¹ØÁªÃ½ÌåÀàÐͶ¨ÒåµÄ£¬Èç3.7½ÚËùÊö¡£

       CRLF           = CR LF

HTTP/1.1 µÄÏûϢͷÓòÖµ¿ÉÒÔÕÛµþ³É¶àÐУ¬µ«½ô½Ó×ŵÄÕÛµþÐÐÓɿոñ£¨SP£©»òË®Æ½ÖÆ±í£¨HT£©ÕÛµþ±ê¼Ç¿ªÊ¼¡£ËùÓеÄÏßÐÔ¿Õ°×£¨LWS£©°üÀ¨ÕÛµþÐеÄÕÛµþ±ê¼Ç£¨¿Õ¸ñSP»òË®Æ½ÖÆ±í¼üHT£©£¬¾ßÓÐͬSPÒ»ÑùµÄÓïÒå¡£½ÓÊÕÕßÔÚ½âÎöÓòÖµ»ò½«ÏûϢתË͵½ÏÂÓΣ¨downstream£©Ö®Ç°¿ÉÄܻὫÈκÎÏßÐÔ¿Õ°×£¨LWS£©Ìæ»»³Éµ¥¸öSP£¨¿Õ¸ñ£©¡£

       LWS            = [CRLF] 1*£¨ SP | HT £©

ÏÂÃæµÄTEXT¹æÔò½ö½öÊÊÓÃÓÚÓòÄÚÈݺÍÓòÖµµÄÃèÊö£¬²»»á±»ÏûÏ¢½âÊÍÆ÷½âÎö¡£TEXTÀïµÄ×Ö¿ÉÒÔ°üº¬²»½ö½öÊÇISO-8859-1[22]ÀïµÄ×Ö·û¼¯£¬Ò²¿ÉÒÔ°üº¬RFC 2047Àï¹æ¶¨µÄ×Ö·û¼¯¡£

       TEXT           = <³ýCTLsÒÔÍâµÄÈÎÒâOCTET£¬µ«°üÀ¨LWS>

Ò»¸öCRLFÖ»ÓÐ×÷ΪHTTPÏûϢͷÓòÑÓÐøµÄÒ»²¿·Öʱ²ÅÔÚTEXT¶¨ÒåÀïʹÓá£

Ê®Áù½øÖÆÊý×Ö×Ö·ûÓÃÔÚ¶à¸öЭÒéÔªËØ£¨protocol element£©Àï¡£

       HEX            = "A" | "B" | "C" | "D" | "E" | "F"

                      | "a" | "b" | "c" | "d" | "e" | "f" | DIGIT

Ðí¶àHTTP/1.1µÄÏûϢͷÓòÖµÊÇÓÉLWS»òÌØÊâ×Ö·û·Ö¸ôµÄ×Ö¹¹³ÉµÄ¡£ÕâÐ©ÌØÊâ×Ö·û±ØÐëÏȱ»°üº¬ÔÚÒýÓÃ×Ö·û´®£¨quoted string£©ÀïÖ®ºó²ÅÄÜÓÃÓÚ²ÎÊýÖµ£¨Èç3.6½Ú¶¨Ò壩Àï¡£

       token £¨±ê¼Ç£©        = 1*<³ýCTLsÓë·Ö¸î·ûÒÔÍâµÄÈÎÒâ CHAR >

       separators£¨·Ö¸î·û£©    = "£¨" | "£©" | "<" | ">" | "@"

                               | "," | ";" | ":" | """ | <">

                                      | "/" | "[" | "]" | "?" | "="

                                      | "{" | "}" | SP | HT

ͨ¹ýÓÃÔ²À¨ºÅÀ¨ÆðÀ´£¬×¢ÊÍ£¨comment£©¿ÉÒÔ°üº¬ÔÚһЩHTTPÍ·ÓòÀï¡£×¢ÊÍÖ»¿ÉÒÔ×÷ΪÓò¶¨ÒåµÄÒ»²¿·Ö¡£ÔÚÆäËûÓòÀԲÀ¨ºÅ±»ÊÓ×÷ÓòÖµµÄÒ»²¿·Ö¡£

       comment £¨×¢ÊÍ£©= "£¨" *£¨ ctext | quoted-pair | comment £© "£©"

       ctext          = <³ý"£¨" ºÍ "£©"ÒÔÍâµÄÈÎÒâTEXT >

Èç¹ûÒ»¸öTEXTÈô±»°üº¬ÔÚË«ÒýºÅÀÔòµ±×÷Ò»¸ö×Ö¡£

       quoted-string = £¨ <"> *£¨qdtext | quoted-pair £© <"> £©

qdtext       = <any TEXT except <">>

б»®Ïߣ¨"""£©¿ÉÒÔ±»×÷Ϊµ¥¸ö×Ö·ûµÄÒýÓûúÖÆ£¬µ«ÊDZØÐëÒªÔÚÒýºÅºÍ×¢ÊÍÇøÖ®ÄÚ¡£

quoted-pair = """ CHAR

3 ЭÒé²ÎÊý
3.1 HTTP°æ±¾
HTTPʹÓÃÒ»¸ö“<major>.<minor>”Êý×ÖģʽÀ´Ö¸Ã÷ЭÒéµÄ°æ±¾ºÅ¡£Ð­ÒéµÄ°æ±¾ºÅÊÇΪÁËÈ÷¢ËͶËÖ¸Ã÷ÏûÏ¢µÄ¸ñʽºÍËüµÄÄÜÁ¦£¬ÕâÊÇΪÁ˽øÒ»²½µÄHTTPͨÐÅ£¬¶ø²»½ö½öÊÇ»ñµÃͨÐŵÄÌØÕ÷¡£Ð­Òé°æ±¾ÊDz»ÐèÒªÐ޸ĵ쬵±ÏûÏ¢×é¼þµÄÔö¼Ó²»»áÓ°ÏìͨÐÅÐÐΪ»ò×ÅÖ»Ôö¼ÓÁËÀ©Õ¹µÄÓòÖµ¡£<minor>Êý×ÖÊǵÝÔöµÄ£¬µ±Ð­Òé»áÒòΪÌí¼ÓÒ»Ð©ÌØÕ÷¶ø×öÁËÐ޸ĵÄʱºò¡£µ«ÕâЩ±ä»¯²»»áÓ°Ïìͨ³£µÄÏûÏ¢½âÎöËã·¨£¬µ«ÊÇËü»á¸øÏûÏ¢Ìí¼ÓÓïÒ⣨semantic£©²¢Çһᰵʾ·¢ËÍÕß¾ßÓжîÍâµÄÄÜÁ¦¡£<major>Êý×ÖÒ²ÊDz»¶ÏµÝÔöµÄ£¬µ±Ð­ÒéµÄÏûÏ¢¸ñʽÿ´Î·¢Éú±ä»¯Ê±¡£

HTTPÏûÏ¢µÄ°æ±¾ÔÚHTTP-VersionÓò±»Ö¸Ã÷£¬HTTP-VersionÓòÔÚÏûÏ¢µÄµÚÒ»ÐÐÖС£

HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT

×¢ÒâmajorºÍminorÊý×Ö±ØÐë±»¿´³ÉÁ½¸ö¶ÀÁ¢ÕûÊý£¬Ã¿¸öÕûÊý¶¼¿ÉÒÔµÝÔö£¬²¢ÇÒ¿ÉÒÔÔö´óµ½´óÓÚһλÊýµÄÕûÊý£¬ÈçHTTP/2.4±ÈHTTP/2.13µÍ£¬¶øHTTP/2.4ÓÖ±ÈHTTP/12.3µÍ¡£Ç°µ¼0±ØÐë±»½ÓÊÕÕߺöÂÔ²¢ÇÒ²»Äܱ»·¢ËÍÕß·¢ËÍ¡£

Ò»¸öÓ¦ÓóÌÐò·¢ËÍÇëÇó»òÏìÓ¦ÏûÏ¢£¬Èç¹ûÇëÇó»òÏìÓ¦ÏûÏ¢ÀïµÄHTTP-VersionÊÇ”HTTP/1.1”£¬ÄÇô´ËÓ¦ÓóÌÐò±ØÐëÌõ¼þ×ñÑ­´ËЭÒ鹿·¶¡£×îÉÙÌõ¼þ×ñÑ­´Ë¹æ·¶µÄÓ¦ÓóÌÐòÓ¦¸Ã°Ñ”HTTP/1.1”°üº¬ÔÚËûÃǵÄÏûÏ¢À²¢ÇÒ¶ÔÈκβ»¼æÈÝHTTP/1.1µÄÏûÏ¢±ØÐëÕâô×ö¡£¹ØÓÚºÎʱ·¢ËÍÌØ¶¨µÄHTTP-VersionÖµµÄϸ½Ú£¬²Î¼ûRFC2145¡£

Ó¦ÓóÌÐòµÄHTTP°æ±¾ÊÇÓ¦ÓóÌÐò×îÉÙÌõ¼þ×ñÑ­µÄ×î¸ßHTTP°æ±¾¡£

´úÀí£¨proxy£©ºÍÍø¹Ø£¨gateway£©Ó¦ÓóÌÐòÐèÒª±»×Ðϸ¶Ô´ý£¬µ±×ª·¢£¨forwarding£©ÏûÏ¢µÄЭÒé°æ±¾²»Í¬ÓÚ´úÀí»òÍø¹ØÓ¦ÓóÌÐòµÄЭÒé°æ±¾¡£ÒòΪÏûÏ¢ÀïЭÒé°æ±¾ËµÃ÷ÁË·¢ËÍÕß´¦ÀíЭÒéµÄÄÜÁ¦£¬ËùÒÔÒ»¸ö´úÀí/Íø¹ØÇ§Íò²»Òª·¢ËÍÒ»¸ö¸ßÓڸôúÀí/Íø¹ØÓ¦ÓóÌÐòЭÒé°æ±¾µÄÏûÏ¢¡£Èç¹û´úÀí»òÍø¹Ø½ÓÊÕÁËÒ»¸ö¸ü¸ß°æ±¾µÄÏûÏ¢£¬ËüÒ²±ØÐëÒª½µµÍÇëÇóµÄ°æ±¾£¬ÒªÃ´ÒÔÒ»¸ö´íÎóÏìÓ¦£¬ÒªÃ´Çл»µ½ËíµÀÐÐΪ£¨tunnel behavior£©¡£

ÓÉÓÚ×Ô´ÓRFC 2068[33]·¢²¼ºó£¬²úÉúÁËÓëHTTP/1.0´úÀí£¨proxy£©µÄ»¥²Ù×÷ÎÊÌ⣬ËùÒÔ»º´æ´úÀí£¨caching proxy£©±ØÐëÄܸıäÇëÇó£¨request£©£¬Ê¹ÇëÇóÄܵ½´ïËûÃÇÄÜÖ§³ÖµÄ×î¸ß°æ±¾£¬µ«Íø¹Ø£¨gateway£©¿ÉÒÔÕâô×öÒ²¿ÉÒÔ²»Õâô×ö£¬¶øtunnel²»ÄÜÕâô×ö¡£´úÀí£¨Proxy£©/Íø¹Ø£¨gateway£©µÄÏìÓ¦£¨Response£©±ØÐëºÍÇëÇó£¨request£©µÄHTTP°æ±¾µÄmajorÊý×ÖÏàͬ¡£

×¢Ò⣺ÔÚHTTP°æ±¾¼äµÄת»»¿ÉÄܰüº¬Í·Óò£¨header field£©µÄ¸Ä±ä£¬¶øÕâЩ¸Ä±ä»á¿ÉÄÜ»á¸ù¾ÝHTTP°æ±¾¶ø±»ÒªÇó»ò±»¾Ü¾ø¡£

3.2 ͳһ×ÊÔ´±êʶ·û£¨URI£©
URIsµÄÐí¶àÃû×ÖÒÑΪÈËËùÖª£ºWWWµØÖ·£¬Í¨ÓÃÎĵµ±êʶ·û£¬Í¨ÓÃ×ÊÔ´±êʶ·û[3]£¬ÒÔ¼°ºóÀ´µÄͳһ×ÊÔ´¶¨Î»Æ÷£¨URL£©[4]ºÍͳһ×ÊÔ´Ãû³Æ£¨URN£©[20]¡£¾ÍHTTP¶øÑÔ£¬Í³Ò»×ÊÔ´¶¨Î»Æ÷Ö»ÊǸñʽ»¯µÄ×Ö·û´®£¬Ëüͨ¹ýÃû³Æ£¬µØÖ·£¬»òÈκαðµÄÌØÕ÷ʶ±ð×ÊÔ´¡£

3.2.1Ò»°ãÓï·¨
¸ù¾ÝʹÓõı³¾°£¬HTTPÀïµÄURI¿ÉÒÔ±íʾ³É¾ø¶Ô£¨absoulute£©ÐÎʽ»òÏà¶ÔÐÎʽ£¨Ïà¶ÔÓÚÒÑÖªµÄURL£©¡£Á½ÖÖÐÎʽµÄÇø±ðÊǸù¾ÝÕâÑùµÄÊÂʵ£º¾ø¶ÔURI×ÜÊÇÒÔÒ»¸ö·½°¸£¨scheme£©Ãû×÷Ϊ¿ªÍ·£¬ÆäºóÊÇÒ»¸öðºÅ¡£¹ØÓÚURL¸üÏ꾡µÄÐÅÏ¢Çë²Î¿´"ͳһ×ÊÔ´±êʶ·û£¨URI£©:Ò»°ãÓï·¨ºÍÓïÒå"£¬RFC 2396 [42]£¨´úÌæÁËRFCs 1738 [4]ºÍRFC 1808 [11]£©¡£±¾¹æ·¶²ÉÓÃÁËRFC 2396ÀïµÄ"URI-reference"£¬"absoluteURI"£¬"relativeURI"£¬"port"£¬"host"£¬"abs_path"£¬"rel_path",ºÍ"authority"µÄ¶¨Òå¸ñʽ¡£

HTTPЭÒé²»¶ÔURIµÄ³¤¶È×÷ÊÂÏȵÄÏÞÖÆ£¬·þÎñÆ÷±ØÐëÄܹ»´¦ÀíËüÃÇ×ÊÔ´µÄURI£¬²¢ÇÒÓ¦¸ÃÄܹ»´¦ÀíÎÞÏÞ³¤¶ÈµÄURI£¬ÕâÖÖÎÞЧ³¤¶ÈµÄURL¿ÉÄÜ»áÔÚ¿Í»§¶ËÒÔGETÐÎʽµÄÇëÇó²úÉú¡£·þÎñÆ÷Ó¦¸Ã·µ»Ø414״̬Â루´Ë״̬Âë´ú±íRequest-URIÌ«³¤£©£¬Èç¹û·þÎñÆ÷²»ÄÜ´¦ÀíÌ«³¤µÄURIµÄʱºò¡£

×¢:·þÎñÆ÷ÔÚÒÀÀµ´óÓÚ255×Ö½ÚµÄURIʱӦ½÷É÷£¬ÒòΪһЩ¾ÉµÄ¿Í»§»ò´úÀíʵÏÖ¿ÉÄܲ»Ö§³ÖÕâЩ³¤¶È¡£

3.2.2 HTTP URL
ͨ¹ýHTTPЭÒ飬HTTP·½°¸£¨HTTP scheme£©±»ÓÃÓÚ¶¨Î»ÍøÂç×ÊÔ´£¨resourse£©µÄλÖᣱ¾½Ú¶¨ÒåÁËÕâÖÖ·½°¸µÄÓï·¨ºÍÓïÒå¡£

   HTTP_URL = "HTTP:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

Èç¹û¶Ë¿ÚΪ¿Õ»òδ¸ø³ö£¬¾Í¼Ù¶¨Îª80¡£ÓïÒå¼´£ºÒÑʶ±ðµÄ×ÊÔ´·ÅÔÚ·þÎñÆ÷ÉÏ£¬ÔÚÄÇ̨Ö÷»úµÄÄǸö¶Ë¿ÚÉϼàÌýTCPÁ¬½Ó¡£Õâʱ×ÊÔ´µÄÇëÇóµÄURIΪ¾ø¶Ô·¾¶£¨5.1.2½Ú£©¡£ÎÞÂÛʲô¿ÉÄܵÄʱºò£¬URLÀïʹÓÃIPµØÖ·¶¼ÊÇÓ¦¸Ã±ÜÃâµÄ£¨²Î¿´RFC 1900 [24]£©¡£Èç¹û¾ø¶ÔµØÖ·£¨abs_path£©Ã»ÓгöÏÖÔÚURLÀÄÇôӦ¸Ã¸ø³ö"/"¡£Èç¹û´úÀí£¨proxy£©ÊÕµ½Ò»¸öÖ÷»ú£¨host£©Ãû£¬µ«ÊÇÕâ¸öÖ÷»úÃû²»ÊÇÈ«³ÆµÄÓòÃû£¨fully quanlified domain name£©£¬Ôò´úÀíÓ¦¸Ã°ÑËüµÄÓòÃû¼Óµ½Ö÷»úÃûÉÏ¡£Èç¹û´úÀí£¨proxy£©½ÓÊÕÁËÒ»¸öÈ«³ÆµÄÓòÃû£¬´úÀí²»±Ø¸Ä±äÖ÷»ú¡£

3.2.3 URI ±È½Ï
µ±±È½ÏÁ½¸öURIÊÇ·ñÆ¥Åäʱ£¬¿Í»§Ó¦¸Ã¶ÔÕû¸öURI±È½ÏʱӦ¸ÃÇø·Ö´óСд£¬²¢ÇÒÒ»¸ö×Ö½ÚÒ»¸ö×ֽڵıȽϡ£ µ«ÏÂÃæÓÐÐ©ÌØÊâÇé¿ö£º

- Ò»¸öΪ¿Õ»òδ¸ø¶¨µÄ¶Ë¿ÚµÈͬÓÚURI-refernece£¨¼ûRFC 2396£©ÀïµÄĬÈ϶˿Ú;

- Ö÷»ú£¨host£©ÃûµÄ±È½Ï±ØÐë²»±Ø·Ö´óСд;

- ·½°¸£¨scheme£©ÃûµÄ±È½Ï±ØÐëÊDz»Çø·Ö´óСдµÄ;

- Ò»¸ö¿Õ¾ø¶Ô·¾¶£¨abs_path£©µÈͬÓÚ"/"¡£

³ýÁË"±£Áô£¨reserved£©"ºÍ"²»°²È«£¨unsafe£©"×Ö·û¼¯ÀïµÄ×Ö·û£¨²Î¼ûRFC 2396 [42]£© £¬ÆäËü×Ö·û¶¼µÈЧÓÚËüÃǵÄ"%HEXHEX"±àÂë.  

ÀýÈç,ÒÔÏÂÈý¸öURIÊǵÈͬµÄ:

      http://abc.com:80/~smith/home.html

      http://ABC.com/%7Esmith/home.html

      http://ABC.com:/%7esmith/home.html

3.3 ÈÕÆÚ/ʱ¼ä¸ñʽ£¨Date/Time Formats£©
3.3.1ÍêÕûÈÕÆÚ £¨Full Date£©
 HTTPÓ¦ÓÃÔø¾­Ò»Ö±ÔÊÐíÈýÖÖ²»Í¬ÈÕÆÚ/ʱ¼ä¸ñʽ£º

      Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123

      Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036

      Sun Nov 6 08:49:37 1994       ; ANSI C's asctime£¨£© format

µÚÒ»ÖÖ¸ñʽÊÇ×÷ΪInternet±ê×¼Ìá³öÀ´µÄ£¬ËüÊÇÒ»¸ö¹ú¶¨³¤¶ÈµÄ£¬ÓÉRFC 1123 [8]£¨RFC 822[9]µÄÉý¼¶°æ±¾£©¶¨ÒåµÄÒ»¸ö×Ó¼¯¡£µÚ¶þÖÖ¸ñʽʹÓÃ±È½ÏÆÕ±é£¬µ«ÊÇ»ùÓÚ·ÏÆúµÄRFC 850 [12]£¬²¢ÇÒûÓÐÄê·Ý¡£Èç¹ûHTTP/1.1¿Í»§¶ËºÍ·þÎñÆ÷½âÎöÈÕÆÚ£¬ËûÃDZØÐëÄܽÓÊÕËùÓÐÈýÖÖ¸ñʽ£¨ÎªÁ˼æÈÝHTTP/1.0£©£¬µ«ÊÇËüÃÇÖ»ÄܲúÉúRFC 1123ÀﶨÒåµÄÈÕÆÚ¸ñʽÀ´Ìî³äÍ·Óò£¨header field£©Óõ½ÈÕÆÚµÄµØ·½¡£

×¢:ÈÕÆÚÖµµÄ½ÓÊÕÕß±»¹ÄÀøÄܽ¡×³µÄ½ÓÊÕ¿ÉÄÜÓÉ·ÇHTTPÓ¦Ó÷¢À´µÄÈÕÆÚÖµ£¬ÀýÈçÓÐʱ¿ÉÒÔͨ¹ý´úÀí£¨proxy£©/Íø¹Ø£¨gateway£©ÏòHTTP://www.cnpaf.net/class/smtp' target='_blank'>SMTP»òNNTP»ñµÃ»òת·¢ÏûÏ¢¡£

ËùÓеÄHTTPÈÕÆÚ/ʱ¼ä¶¼±ØÐëÒÔ¸ñÁÖÍþÖÎʱ¼ä£¨GMT£©±íʾ¡£¶ÔHTTP¶øÑÔ£¬GMTÍêÈ«µÈͬÓÚUTC£¨ÊÀ½çЭµ÷ʱ¼ä£©¡£Ç°Á½ÖÖÈÕÆÚ/ʱ¼ä¸ñʽÀï°üº¬“GMT”£¬ËüÊÇÊ±ÇøµÄÈý¸ö×ÖÃæµÄ¼òд£¬²¢ÇÒµ±¶Áµ½Ò»¸öasctime¸ñʽʱ±ØÐëÏȱ»¼Ù¶¨ÊÇGMTʱ¼ä¡£HTTPÈÕÆÚ£¨HTTP-date£©Çø·Ö´óСд£¬²»Äܰüº¬Ò»¸ö¶îÍâµÄLWS£¬³ý·Ç´ËLWS×÷ΪÔÚÏÂÃæµÄHTTP-dateÓï·¨ÖÐÖ¸¶¨µÄSP¡£

       HTTP-date    = RFC1123-date | RFC850-date | asctime-date

       RFC1123-date = wkday "," SP date1 SP time SP "GMT"

       RFC850-date = weekday "," SP date2 SP time SP "GMT"

       asctime-date = wkday SP date3 SP time SP 4DIGIT

       date1        = 2DIGIT SP month SP 4DIGIT

                      ; day month year £¨e.g., 02 Jun 1982£©

       date2        = 2DIGIT "-" month "-" 2DIGIT

                      ; day-month-year £¨e.g., 02-Jun-82£©

       date3        = month SP £¨ 2DIGIT | £¨ SP 1DIGIT £©£©

                      ; month day £¨e.g., Jun 2£©

       time         = 2DIGIT ":" 2DIGIT ":" 2DIGIT

                      ; 00:00:00 - 23:59:59

       wkday        = "Mon" | "Tue" | "Wed"

                    | "Thu" | "Fri" | "Sat" | "Sun"

       weekday      = "Monday" | "Tuesday" | "Wednesday"

                    | "Thursday" | "Friday" | "Saturday" | "Sunday"

       month        = "Jan" | "Feb" | "Mar" | "Apr"

                    | "May" | "Jun" | "Jul" | "Aug"

                    | "Sep" | "Oct" | "Nov" | "Dec"

×¢Òâ:HTTP¶ÔÈÕÆÚ/ʱ¼ä¸ñʽµÄÒªÇó½ö½öÓ¦ÓÃÔÚЭÒéµÄÏûÏ¢£¨Òë×¢:Ô­ÎÄÊÇprotocol stream£¬±ãÓÚÀí½âÕâÀïÒë×÷ÏûÏ¢£©Àï¡£¿Í»§ºÍ·þÎñÆ÷²»±Ø°ÑÕâÖÖ¸ñʽӦÓÃÓÚÓû§³ÊÏÖ£¨user presentation£©£¬ÇëÇó¼Ç¼ÈÕÖ¾£¬µÈµÈ¡£.

3.3.2 Delta Seconds
 Ò»Ð©HTTPÍ·Óò£¨header field£©ÔÊÐíÓÃÕûÊýÃë±íʾʱ¼äÖµ£¬ÕûÊýÃëÓÃÊ®½øÖƱíʾ£¬´ËÕûÊýÃë±íʾÏûÏ¢±»½ÓÊÕºóʱ¼ä¡£

   delta-seconds = 1*DIGIT

3.4 ×Ö·û¼¯
 HTTPʹÓÃÊõÓï"×Ö·û¼¯"µÄ¶¨Ò壬ÕâºÍMIMEÖÐËùÃèÊöµÄÊÇÒ»Ñù.

±¾ÎĵµÖеÄÊõÓï"×Ö·û¼¯"Éæ¼°µ½Ò»ÖÖ·½·¨£¬´Ë·½·¨ÊÇÓÃÒ»¸ö»ò¶à¸ö±í½«Ò»¸ö½ÚÐòÁÐת»»³ÉÒ»¸ö×Ö·ûÐòÁУ¨Òë×¢£º´ÓÕâÀïÀ´¿´£¬ÕâÓ¦¸ÃÊÇÒ»ÖÖÓ³Éä¹ØÏµ£¬±í±£´æÁËÓ³Éä¹ØÏµ£©¡£×¢Òâ·´·½ÏòµÄÎÞÌõ¼þת»»£¨Òë×¢:´ÓÒ»¸ö×Ö·ûÐòÁе½Ò»¸ö×Ö½ÚÐòÁеÄת»»£©ÊDz»ÐèÒªµÄ£¬ÒòΪ²¢²»ÊÇËùÓеÄ×Ö·û¶¼ÄÜÔÚÒ»¸ö¸ø¶¨µÄ×Ö·û¼¯ÀïµÃµ½£¬Ò»¸ö×Ö·û¼¯¿ÉÄÜÌṩ¶à¸ö×Ö½ÚÐòÁбíÕ÷Ò»¸öÌØ¶¨µÄ×Ö·û¡£Õâ¸ö¶¨ÒåÊÇΪÁËÔÊÐí²»Í¬ÖÖÀàµÄ×Ö·û±àÂë´Óµ¥Ò»¼òµ¥±íÓ³É䣨ÈçUS-ASCII£©µ½¸´ÔÓ±íµÄת»»·½·¨ÈçISO-2022¼¼ÊõÓõ½µÄ¡£È»¶ø£¬ÓëMIME×Ö·û¼¯Ãû×ÖÏà¹ØµÄ¶¨Ò屨ÐëÒª³ä·Ö˵Ã÷´Ó×Ö½Úµ½×Ö·ûµÄÓ³Éä¡£ÌØ±ðµÄ£¬Ê¹ÓÃÍⲿÂÖÀªÐÅÏ¢À´¾«È·È·¶¨Ó³ÉäÊDz»ÔÊÐíµÄ.

×¢:ÕâÀïʹÓõÄÊõÓï"×Ö·û¼¯"Ò»°ãµÄ±»³Æ×÷Ò»ÖÖ"×Ö·û±àÂë"¡£²»¹ý¼ÈÈ»HTTPºÍMIMEÔÚͬһ»ú¹¹×¢²á£¬ÊõÓïͳһÊǺÜÖØÒªµÄ¡£

HTTP×Ö·û¼¯ÊÇÓò»Çø·Ö´óСдµÄ±ê¼Ç£¨token£©±íʾ¡£ËùÓеıê¼Ç¼¯ÓÉIANA×Ö·û¼¯×¢²á»ú¹¹[19]¶¨Òå¡£

       charset = token

¾¡¹ÜHTTPÔÊÐíÓÃÈÎÒâ±ê¼Ç£¨token£©×÷Ϊ×Ö·û¼¯£¨charset£©Öµ£¬µ«Èκαê¼ÇÖµÈç¹ûËüÒѾ­ÔÚIANA×Ö·û¼¯×¢²á»ú¹¹×¢²áÁËÔò±ØÐë±íʾÔÚ¸Ã×¢²á»ú¹¹¶¨ÒåµÄ×Ö·û¼¯¡£¶ÔÄÇЩ·ÇIANA¶¨ÒåµÄ×Ö·û¼¯£¬Ó¦ÓóÌÐòÓ¦¸ÃÏÞÖÆÊ¹Óá£

HTTPЭÒéµÄʵÏÖÕßÓ¦¸Ã×¢ÒâIETF×Ö·û¼¯µÄÒªÇó[38][41].

3.4.1¶ªÊ§µÄ×Ö·û¼¯£¨Missing Charset£©
һЩHTTP/1.0Ó¦ÓóÌÐòµ±ËûÃǽâÎöContent-Typeͷʱ£¬µ±·¢ÏÖûÓÐ×Ö·û¼¯²ÎÊý£¨charset parameter£¬Òë×¢:Content-Type: text/plain; charset=UTF-8£¬´Ëʱcharset=UTF-8¾ÍÊÇ×Ö·û¼¯²ÎÊý£©¿ÉÓÃʱ£¬ÕâÒâζ׎ÓÊÕÕß±ØÐë²Â²âʵÌåÖ÷Ì壨entity body£¬Òë×¢£ºÕâÀï·­Òë³É“ʵÌåÖ÷Ìå”ÒòΪContent-TypeÍ·ÊÇʵÌåÍ·£¬ÏûϢͷ¿ÉÒÔ·ÖΪʵÌåÍ·£¬³£ÓÃÍ·£¬ÇëÇóÍ·£¬ÏìӦͷ£¬ÔÚÒëÎÄÖжà´ÎÓõ½“Í·”ºÍ“Í·Óò”£¬ÈçÏûϢͷ£¬ÏûϢͷÓò£¬ÆäʵÊÇͬһ¸öÒâ˼£¬HTTP1.1ЭÒéÓÐʱºò¸ÅÄî²¢²»ÊÇÍêȫͳһµÄ£©µÄ×Ö·û¼¯ÊÇʲô¡£Èç¹û·¢ËÍÕßÏ£Íû±ÜÃâÕâÖÖÇé¿ö£¬ËûÓ¦¸ÃÔÚContent-TypeÍ·ÓòÀï°üº¬Ò»¸ö×Ö·û¼¯²ÎÊý£¬¼´Ê¹×Ö·û¼¯ÊÇISO-8859-1Ò²Ó¦¸ÃÕâÑù×ö£¬ÕâÑù¾Í²»»áÈýÓÊÕÕß²úÉú»ìÏý¡£

²»ÐÒµÄÊÇ£¬Ò»Ð©¾ÉµÄHTTP/1.0¿Í»§¶Ë²»ÄÜ´¦ÀíÔÚContent-TypeÍ·ÓòÀïÃ÷È·Ö¸¶¨µÄ×Ö·û¼¯²ÎÊý¡£HTTP/1.1½ÓÊն˱ØÐëÒªÈÏÕæ¶Ô´ý·¢ËÍÕßÌṩµÄ×Ö·û¼¯£»²¢ÇÒµ±Óû§´úÀí£¨user agent£¬Òë×¢£ºÈçä¯ÀÀÆ÷£¬¿ÉÈÏΪÊǽÓÊÕ¶Ë£©¿ªÊ¼ÏÔʾһ¸öÎĵµÊ±£¬ËäÈ»Óû§´úÀí¿ÉÒԲ²âÎĵµµÄ×Ö·û¼¯£¬µ«Èç¹ûcontent-typeÍ·ÓòÀïÌṩÁË×Ö·û¼¯£¬²¢ÇÒÓû§´úÀíÒ²Ö§³ÖÕâÖÖ×Ö·û¼¯µÄÏÔʾ£¬²»¹ÜÓû§´úÀíÊÇ·ñÔ¸Ò⣬Ëü±ØÐëÒªÀûÓÃÕâÖÖ×Ö·û¼¯¡£²Î¼û3.7.1½Ú¡£

3.5 ÄÚÈݱàÂ루Content Codings£©
ÄÚÈݱàÂëÖµ£¨content coding value£©±íʾһÖÖÒѾ­»ò¿ÉÒÔÓ¦ÓÃÓÚʵÌåµÄ±àÂëת»»£¨encoding   transformation£©¡£ÄÚÈݱàÂëÖ÷ÒªÓÃÓÚÎĵµµÄѹËõ»òÆäËüÓÐЧµÄ±ä»»£¬µ«ÕâÖֱ任ÐèÒª²»ÄܶªÊ§ÎĵµµÄýÌåÀàÐÍ£¨media type£¬Òë×¢£ºÎĵµÒ»°ã»áÓÐýÌåÀàÐÍ£¬Õâͨ¹ýÔÚcontent-typeÀïÖ¸¶¨£©µÄÌØÐÔ£¬Ò²²»ÄܶªÊ§ÎĵµµÄÐÅÏ¢£¨Òë×¢£º¾ÍÏñÓÐËðѹËõºÍÎÞËðѹËõ£¬Ç°Õß²»»á¶ªÊ§ÐÅÏ¢£¬ºóÕ߻ᶪʧÐÅÏ¢£©¡£ÊµÌå¾­³£±»±àÂëµÄ´¢´æ£¬È»ºóÖ±½Ó´«ËÍ£¬½ÓÊÕ¶ËÖ»ÄܽâÂë¡£

       content-coding   = token

ËùÓÐÄÚÈݱàÂëÖµ£¨content-coding value£©ÊDz»Çø·Ö´óСдµÄ¡£HTTP/1.1ÔÚ½ÓÊÕÒëÂë £¨14.3½Ú£©ºÍÄÚÈÝÒëÂ루Content-Encoding£©£¨14.11½Ú£©Í·ÓòÀïʹÓÃÄÚÈݱàÂëÖµ£¨content-coding value£©¡£¾¡¹Ü¸ÃÖµÃèÊöÁËÄÚÈݱàÂ룬¸üÖØÒªµÄÊÇËüÖ¸³öÁËÒ»ÖÖ½âÂë»úÖÆ£¬ÀûÓÃÕâÖÖ»úÖÆ¶ÔʵÌåµÄ±àÂë½øÐнâÂë¡£

ÍøÂç·ÖÅäÊý×ÖȨÍþ£¨ £¨IANA£©³äµ±ÄÚÈݱàÂëÖµ±ê¼Ç£¨token£©µÄ×¢²á»ú¹¹¡£×î³õ£¬×¢²á±íÀï°üº¬ÏÂÁбê¼Ç:

gzip£¨Ñ¹Ëõ³ÌÐò£©

Ò»ÖÖÓÉÎļþѹËõ³ÌÐò"gzip"£¨GNU zip£©²úÉúµÄ±àÂë¸ñʽ£¨ÔÚRFC 1952ÖÐÃèÊö£©¡£ÕâÖÖ±àÂë¸ñʽÊÇÒ»ÖÖ¾ßÓÐ32λCRCµÄLempel-Ziv±àÂ루LZ77£©¡£

compress£¨Ñ¹Ëõ£©

Ò»ÖÖÓÉUNIXÎļþѹËõ³ÌÐò"compress"²úÉúµÄ±àÂë¸ñʽ¡£ÕâÖÖ±àÂë¸ñʽÊÇÒ»ÖÖ¾ßÓпÉÊÊÓ¦ÐÔµÄLempel-Ziv-Welch±àÂ루LZW£©¡£

¶ÔÓÚ½«À´µÄ±àÂ룬ÓóÌÐòÃûʶ±íÕ÷±àÂë¸ñʽÊDz»¿ÉÈ¡¡£ÔÚÕâÀïÓõ½ËûÃÇÊÇÒòΪËûÃÇÔÚÀúÊ·µÄ×÷Óã¬ËäÈ»ÕâÑù×ö²¢²»ºÃ¡£ÎªÁËͬÒÔǰµÄHTTPʵÏÖÏà¼æÈÝ£¬Ó¦ÓóÌÐòÓ¦¸Ã½«"x-gzip"ºÍ"x-compress"·Ö±ðµÈͬÓÚ"gzip"ºÍ"compress"¡£

deflate£¨ËõС£©¡¡

deflate±àÂëÊÇÓÉRFC 1950 [31]¶¨ÒåµÄ"zlib"±àÂë¸ñʽÓëRFC 1951 [29]ÀïÃèÊöµÄ"deflate"ѹËõ»úÖÆµÄ×éºÏµÄ²úÎï¡£

identity£¨Ò»ÖÂÐÔ£©

 IdentityÊÇȱʡ±àÂ룻ָÃ÷ÕâÖÖ±àÂë±íÃ÷²»½øÐÐÈκαàÂëת»»¡£ÕâÖÖÄÚÈݱàÂë½ö±»ÓÃÓÚ½ÓÊÕÒëÂ루Accept-Encoding£©Í·Óò£¬µ«²»Äܱ»ÓÃÔÚÄÚÈÝÒëÂ루Content-Encoding£©Í·Óò¡£.

 ÐµÄÄÚÈݱàÂëÖµ±ê¼Ç£¨token£©Ó¦¸Ã±»×¢²á£»ÎªÁËʵÏÖ¿Í»§ºÍ·þÎñÆ÷¼äµÄ»¥²Ù×÷ÐÔ£¬ÊµÏÖÐÂÖµµÄÄÚÈݱàÂëËã·¨¹æ·¶Ó¦¸ÃÄܹ«¿ªÀûÓò¢ÇÒÄܶÀÁ¢ÊµÏÖ£¬²¢ÇÒÓë±¾½ÚÖб»¶¨ÒåµÄÄÚÈݱàÂëÄ¿µÄÏàÒ»Ö¡£

3.6 ´«Êä±àÂë £¨Transfer Codings£©
´«Êä±àÂëÖµ£¨transfer-coding value£¬Òë×¢£ºtransfer codingºÍºÍtransfer-codingÕâÁ½¸öÊõÓïÔÚ±¾Ð­Ò鹿·¶ÀïËù±í´ïµÄÒâ˼Æäʵûʲô̫´óÇø±ð£¬“transfer-coding”¿ÉÄܸüÄܱí´ïÓïÒ⣬ÒòΪËüÊǹæÔòÖеĹæÔòÃû£¬¼ûÏÂÃæºì×ֵĹæÔò£©±»ÓÃÀ´±íʾһ¸öÒѾ­£¬Äܹ»£¬»ò¿ÉÄÜÓ¦ÓÃÓÚÒ»¸öʵÌåµÄ±àÂëת»»£¬´«Êä±àÂëÊÇΪÁËÄܹ»È·±£ÍøÂ簲ȫ´«Êä¡£ÕⲻͬÓÚÄÚÈݱàÂ루content coding£©£¬ÒòΪ´«Êä±àÂ루transfer coding£©ÊÇÏûÏ¢µÄÊôÐÔ¶ø²»ÊÇʵÌåµÄÊôÐÔ¡£

       transfer-coding = "chunked" | transfer-extension

       transfer-extension      = token *£¨ ";" parameter £©

   ²ÎÊý£¨parameter£©²ÉÓÃÊôÐÔ/Öµ¶ÔµÄÐÎʽ.

       parameter                    = attribute "=" value

       attribute                   = token

       value                     = token |   quoted-string

ËùÓд«Êä±àÂëÖµ£¨transfer-coding value£¬Òë×¢£ºÉÏÃæºìÌå×ֵȺÅÓұ߹æÔò±í´ïʽËù±í´ïµÄÖµ£©ÊÇ´óСд²»Ãô¸Ð¡£´«Êä±àÂëÖµÔÚTEÍ·Óò£¨14.39½Ú£©ºÍÔÚ´«ÊäÒëÂ루Transfer-encoding£© Í·ÓòÖУ¨14.41½Ú£©±»ÔËÓá£

ÎÞÂÛºÎʱ£¬´«Êä±àÂ루transfer-coding£©Ó¦ÓÃÓÚÒ»¸öÏûÏ¢Ö÷Ì壨message body£©Ê±£¬Èç¹û´æÔÚ¶à¸ö´«Êä±àÂ룬ÔòÕâЩ´«Êä±àÂëÖбØÐë°üÀ¨“¿é”£¨"chunked"£©´«Êä±àÂ룬³ý·Çͨ¹ý¹Ø±ÕÁ¬½Ó¶øÖжÏÏûÏ¢¡£µ±“¿é”£¨“chunked”£©´«Êä±àÂë±»ÓÃÓÚ´«Êä±àÂëʱ£¬Ëü±ØÐëÊÇÓ¦ÓÃÓÚÏûÏ¢Ö÷ÌåµÄ×îºó´«Êä±àÂë¡£"¿é"£¨"chunked"£©´«Êä±àÂë×î¶àÖ»ÄÜÓÃÓÚÏûÏ¢Ö÷Ì壨message-body£©Ò»´Î¡£¹æ¶¨ÁËÉÏÊö¹æÔòºó£¬½ÓÊÕÕ߾ͿÉÒÔÈ·¶¨ÏûÏ¢µÄ´«Ê䳤¶È£¨transfer-length£©£¨4.4½Ú£©

´«Êä±àÂëÓëMIME[7]µÄÄÚÈÝ´«ÊäÒëÂ루Content-Transfer-Encoding£¬Òë×¢£ºtransferÓ¦¸ÃÊÇ×ªÒÆ£¬Ç¨ÒƵÄÒâ˼£¬ÓÖÀýÈçHTTPЭÒ飬Ӧ¸Ã·­Òë³É“³¬Îı¾×ªÒÆÐ­Ò锣¬µ«ÊÇÀúÊ·É϶¼·­Òë³É“³¬Îı¾´«ÊäЭÒ锣¬ËùÒÔÕâÀï·­Òë³É“³¬Îı¾´«ÊäЭÒ锣©ÖµÓÐÏàÀàËÆÐÍ£¬Ëü±»¶¨ÒåÄܹ»ÊµÏÖÔÚ7λ´«Êä·þÎñÉϱ£Ö¤¶þ½øÖÆÊý¾ÝµÄ´«Ê䰲ȫ¡£²»¹ý£¬´«Êä±àÂëÓëÄÚÈÝ´«ÊäÒëÂ루Content-Transfer-Encoding£©¶Ô´¿8λ´«ÊäЭÒéÓв»Í¬µÄ¹Ø×¢µã¡£ÔÚHTTPÖУ¬ÏûÏ¢Ö÷Ìå´æÔÚ²»°²È«µÄÒþ»¼£¬ÒòΪÓÐʱºòºÜÄÑÈ·¶¨ÏûÏ¢Ö÷ÌåµÄ³¤¶È£¬ÔÚ¹²ÏíµÄ´«ÊäÉϼÓÃÜÊý¾ÝÒ²»á´øÀ´°²È«ÐÔÎÊÌ⣨7.2.2½Ú£©¡£

ÍøÂç·ÖÅäÊý×ÖȨÍþ£¨IANA£©µ£ÈÎ×¢²á´«Êä±àÂëÖµ±ê£¨token£©¼ÇµÄ½ÇÉ«¡£Æð³õ,×¢²á°üº¬Èçϱê¼Ç:"¿é"£¨3.6.1½Ú£©,"Éí·Ý"£¨3.6.2½Ú£©,"gzip"£¨3.5½Ú£©,"ѹËõ"£¨3.5½Ú£©,ºÍ"ËõС"£¨3.5½Ú£©.

еĴ«Êä±àÂëÖµ±ê¼ÇÓ¦¸Ã×¢²á£¬ÕâͬеÄÄÚÈݱàÂëÖµ±ê¼ÇÒ²ÐèҪע²áÒ»Ñù¡£.

½ÓÊն˽ÓÊÕµ½Ò»¸ö´øÓд«Êä±àÂ루transfer-coding£©£¨Òë×¢£ºÍ¨¹ýÏûϢͷÓòtransfer-encodingÖ¸Ã÷´ËʵÌåÖ÷ÌåµÄ´«Êä±àÂ룩µÄʵÌåÖ÷Ì壨entity body£©£¬Èç¹ûËü²»ÄܶÔÕâ¸ö±àÂëºóµÄʵÌåÖ÷Ìå½øÐнâÂ룬ÄÇôËüÓ¦·µ»Ø501£¨²»ÄÜʵÏÖ£©£¬²¢ÇÒÒªÇжÏÁªÏµ¡£·þÎñÆ÷²»ÄÜÏòHTTP/1.0¿Í»§·¢ËÍ´«Êä±àÂë.

3.6.1¿é´«Êä±àÂ루Chunked Transfer Coding£©
¿é±àÂ루chunked encoding£©¸Ä±äÏûÏ¢Ö÷ÌåʹÏûÏ¢Ö÷Ì壨message body£¬Òë×¢£ºÏûÏ¢Ö÷ÌåÓëʵÌåÖ÷ÌåÊÇÓÐÇø±ðµÄ£¬ºóÃæÕ½ڽ«»á½éÉÜ£©³É¿é·¢ËÍ¡£Ã¿Ò»¸ö¿éÓÐËü×Ô¼ºµÄ´óС£¨size£©Ö¸Ê¾Æ÷£¬ÔÚËùÓеĿéÖ®ºó»á½ô½Ó×ÅÒ»¸ö¿ÉÑ¡µÄ°üº¬ÊµÌåÍ·ÓòµÄβ²¿£¨trailer£©¡£ÕâÔÊÐí·¢ËͶËÄܶ¯Ì¬Éú³ÉÄÚÈÝ£¬²¢ÄÜЯ´øÓÐÓõÄÐÅÏ¢£¬ÕâЩÐÅÏ¢ÄÜÈýÓÊÕÕßÅжÏÏûÏ¢ÊÇ·ñ½ÓÊÕÍêÕû¡£

       Chunked-Body£¨¿éÕýÎÄ£©   = *chunk£¨¿é£©

                                 last-chunk£¨×îºó¿é£©

                                    trailer£¨Î²²¿£©

                             CRLF

       chunk£¨¿é£©          = chunk-size [ chunk-extension ] CRLF

                               chunk-data CRLF

       chunk-size     = 1*HEX

       last-chunk     = 1*£¨"0"£© [ chunk-extension ] CRLF      

       chunk-extension= *£¨ ";" chunk-ext-name [ "=" chunk-ext-val ] £©             

       chunk-ext-name = token

       chunk-ext-val = token | quoted-string

       chunk-data     = chunk-size£¨OCTET£©

       trailer        = *£¨entity-header CRLF£©

chunk-sizeÊÇÓÃ16 ½øÖÆÊý×Ö×Ö·û´®¡£¿é±àÂ루chunked encoding£©ÒÔÈÎÒ»´óСΪ0µÄ¿é½áÊø£¬½ô½Ó×ÅÊÇβ²¿£¨trailer£©£¬Î²²¿ÒÔÒ»¸ö¿ÕÐÐÖÕÖ¹¡£

β²¿£¨trailer£©ÔÊÐí·¢ËͶËÔÚÏûÏ¢µÄĩβ°üº¬¸½¼ÓµÄHTTPÍ·Óò£¨header field£©¡£TrailerÍ·Óò£¨Trailer header field£¬Òë×¢£ºTrailerÍ·Êdz£ÓÃÏûϢͷ£¬ÔÚ14.40½Ú˵Ã÷£©±»Ó¦ÓÃÀ´Ö¸Ã÷ÄÄЩͷÓò±»°üº¬ÔÚ¿é±àÂëµÄβ²¿£¨trailer£© £¨¼û14.40½Ú£©

Èç¹û·þÎñÆ÷ÒªÓÿ鴫Êä±àÂë½øÐÐÏìÓ¦£¬Ëü²»Äܰüº¬Î²²¿£¨trailer£©£¬³ý·ÇÒÔÏÂÖÁÉÙÒ»ÌõÎªÕæ£º

a£©Èç¹û´ËÏìÓ¦µÄÇëÇó°üÀ¨Ò»¸öTEÍ·Óò£¬²¢ÇÒËüÖ¸Ã÷ÁË´«Êä±àÂëÖеētrailers”ÊǿɽÓÊܵ쬵±ÏìÓ¦µÄ´«Êä±àÂ루transfer-coding£©ÊÇ¿é±àÂëʱ¡£ÕâÔÚ14.39½ÚÖÐÃèÊö£»»òÕß

 b£©Èç¹û·þÎñÆ÷ÊÇÏìÓ¦µÄÔ´·þÎñÆ÷£¬²¢ÇÒ½ÓÊն˽ÓÊÕ¿é´«Êä±àÂëÏìÓ¦µ«²»»áÈ¥Àí»áÏìÓ¦µÄβ²¿£¨trailer£¬Òë×¢£ºÎ²²¿°üº¬Í·Óò£¬Í·Óò¾ÍÊÇÏûÏ¢µÄÔªÊý¾Ý£¨metadata£©£©²¢ÇÒÕâÖÖ·½Ê½Ô´·þÎñÆ÷ÊÇ¿ÉÒÔ½ÓÊܵģ¬Õâʱ·þÎñÆ÷ÊDz»ÐèÒª°Ñβ²¿£¨trailer£©°üº¬½øÏûÏ¢µÄ¿é´«Êä±àÂëÖÐÈ¥µÄ¡£»»¾ä»°Ëµ£¬Ô´·þÎñÆ÷Ô­Òâ½ÓÊÜβ²¿£¨trailer£©¿ÉÄÜ»áÔÚµ½´ï¿Í»§¶Ëʱ±»¶ªÆúµÄ¿ÉÄÜÐÔ¡£

´ËÒªÇó·ÀÖ¹ÁËÒ»ÖÖ»¥²Ù×÷ÐÔµÄʧ°Ü£¬µ±ÏûÏ¢±»Ò»¸öHTTP/1.1£¨»ò¸ü³ÙµÄ£©´úÀí£¨proxy£©½ÓÊÕ²¢ÇÒתµ½Ò»¸öHTTP/1.0µÄ½ÓÊն˵Äʱºò¡£  

ÔÚ¸½Â¼19.4.6½Ú½éÉÜÁËÒ»¸öÀý×Ó£¬Õâ¸öÀý×Ó½éÉÜÔõÑù¶ÔÒ»¸ö¿éÕýÎÄ£¨chunked-body£©½øÐнâÂë¡£

ËùÓÐHTTP/1.1Ó¦ÓóÌÐò±ØÐëÄܽÓÊպͽâÂë¿é£¨chunked£©´«ÊäÒëÂ룬²¢ÇÒ±ØÐëºöÂÔËüÃDz»ÄÜÀí½âµÄ¿éÀ©Õ¹£¨chunk-extentsion£¬Òë×¢£º¼ûÉÏÃæµÄ¹æÔò±í´ïʽ£©.

3.7 ýÌåÀàÐÍ£¨Media Type£©
HTTPÔÚContent-Type£¨14.17½Ú£©ÊµÌåÍ·ÓòºÍAcceptÇëÇóÍ·ÓòÀïÀûÓÃÍøÂçýÌå[17]ÀàÐÍ£¬ÕâÊÇΪÁËÌṩ¹«¿ªµÄ£¬¿ÉÀ©Õ¹µÄÊý¾Ý´òÓ¡ºÍÀàÐÍЭÉÌ¡£

media-type    = type "/" subtype *£¨ ";" parameter £©

type               = token

subtype         = token

 

²ÎÊý£¨parameter£©ÒÔÒ»ÖÖÊôÐÔ/Öµ¶ÔµÄÐÎʽ¸úËætype/subtype£¨Èç3.6½Ú¶¨Ò壩 ¡£

ÀàÐÍ£¨type£©£¬×ÓÀàÐÍ£¨subtype£©£¬ºÍ²ÎÊý£¨parameter£©ÀïÊôÐÔÃû³ÆÊÇ´óСд²»Ãô¸ÐµÄ¡£²ÎÊýÖµÓпÉÄÜÊÇ´óСдÃô¸ÐµÄ£¬Ò²¿ÉÄܲ»ÊÇ£¬Õâ¸ù¾Ý²ÎÊýÀïÊôÐÔÃûµÄÓïÒâ¡£ÏßÐÔ¿Õ°×£¨LWS£©²»Äܱ»ÓÃÓÚÀàÐÍ£¨type£©ºÍ×ÓÀàÐÍ£¨subtype£©Ö®¼ä£¬Ò²²»ÄÜÓÃÓÚ²ÎÊýµÄÊôÐÔºÍÖµÖ®¼ä¡£²ÎÊýµÄ³öÏÖ»ò²»³öÏÖ¶Ô´¦ÀíýÌåÀàÐÍ£¨media-type£©¿ÉÄÜ»áÓаïÖú£¬ÕâÈ¡¾öÓÚËüÔÚýÌåÀàÐÍ×¢²á±íÀïµÄ¶¨Òå¡£

×¢ÒâһЩ¾ÉµÄHTTPÓ¦ÓóÌÐò²»ÄÜʶ±ðýÌåÀàÐ͵IJÎÊý£¨parameter£©¡£µ±ÏòÒ»¸ö¾ÉµÄHTTPÓ¦ÓóÌÐò·¢ËÍÊý¾Ýʱ£¬·¢ËͶËÖ»ÓÐÔÚ±»type/subtype¶¨ÒåÐèҪʱ²ÅʹÓÃÀàÐͲÎÊý£¨parameter£©¡£

ýÌåÀàÐÍ£¨media-type£©ÖµÐèÒª±»×¢²áµ½ÍøÂçÊý×Ö·ÖÅäȨÍþ£¨IANA[19]£©ÀýÌåÀàÐ͵Ä×¢²á³ÌÐòÔÚRFC 1590[17]Öдó¸ÅÃèÊö¡£Ê¹ÓÃδ¾­×¢²áµÄýÌåÀàÐÍÊDz»±»¹ÄÀøµÄ¡£

 

3.7.1¹æ·¶»¯ºÍÎı¾È±Ê¡ £¨Canonicalization and Text Defaults£©
ÍøÂçýÌåÀàÐÍÒԹ淶»¯µÄ¸ñʽ±»×¢²á¡£Ò»¸öʵÌåÖ÷Ì壨entity-body£©Í¨¹ýHTTPÏûÏ¢´«Ê䣬Ëü±ØÐëÔÚ´«ÊäǰÒÔÒ»ÖÖºÏÊʵĹ淶»¯µÄ¸ñʽ±íÕ÷³ýÁËÎı¾ÀàÐÍ£¨text type£©£¬Îı¾ÀàÐͽ«»áÔÚÏÂÒ»¶Î²ûÊö¡£

µ±ÏûÏ¢ÒÔÒ»Öֹ淶»¯µÄ¸ñʽ±íÏÖʱ£¬Îı¾ÀàÐ͵Ä×ÓÀàÐÍ£¨subtype£©ÔËÓÃGRLF×÷ΪÎı¾ÀïµÄ»»Ðзû¡£HTTP·ÅËÉÁËÕâ¸öÒªÇ󣬲¢ÇÒÔÊÐíÎı¾Ã½ÌåÒÔÒ»¸öCR»òLF´ú±íÒ»¸ö»»Ðзû´«Ê䣬²¢ÇÒÕâÑù×öÒª¹á´©Õû¸öʵÌåÖ÷Ì壨entity-body£©¡£HTTPÓ¦ÓóÌÐò±ØÐëÄܽÓÊÕCRLF£¬CRºÍLF×÷ΪÔÚÎı¾Ã½ÌåÒ»¸ö»»Ðзû¡£ÁíÍ⣬Èç¹ûÎı¾×Ö·û¼¯£¨character set£©²»ÄÜÓÃ×Ö½Ú13ºÍ10À´·Ö±ðµØ±íÕ÷CRºÍLFÒòΪ´æÔÚһЩ¶à×Ö½Ú×Ö·û£¬HTTPÔÊÐíÓ¦ÓÃ×Ö·û¼¯ÀïµÈ¼ÛÓÚCRºÍLFµÄ×Ö½ÚÐòÁÐÀ´±íʾ»»Ðзû¡£¶Ô»»ÐзûµÄÁé»î´¦ÀíÖ»ÄÜÓ¦ÓÃÓÚʵÌåÖ÷ÌåÀïµÄÎı¾Ã½Ì壻ÔÚHTTPÏûÏ¢½á¹¹Àһ¸öµ¥¶ÀµÄCR»òLF¶¼²»ÄÜ´úÌæCRLF£¨ÈçÍ·ÓòºÍ¶à±ß½çÌ壨multipart boundaries£©½á¹¹À¡£

Èç¹ûÒ»¸öʵÌåÖ÷Ì壨entity-body£©ÓÃÄÚÈݱàÂ루content-coding£©½øÐбàÂ룬ԭʼÊý¾Ý£¨Òë×¢£º±»±àÂëǰµÄÊý¾Ý£©ÔÚ±»±àÂëǰ±ØÐëÊÇÒ»ÖÖ¶¨ÒåµÄýÌåÀàÐ͸ñʽ¡£.

"charset"²ÎÊý£¨parameter£©±»Ó¦ÓÃÓÚһЩýÌåÀàÐÍ£¬À´¶¨ÒåÊý¾ÝµÄ×Ö·û¼¯£¨¼û3.4½Ú£©¡£µ±·¢ËÍÕßûÓÐÔÚýÌåÀàÐÍ£¨media-type£©ÀïÖ¸Ã÷charset²ÎÊý£¨parameter£©Ê±£¬Îı¾ÀàÐ͵Ä×ÓýÌåÀàÐÍ£¨subtype£©±»ÈÏΪÊÇȱʡµÄISO-8859-1×Ö·û¼¯µ±±»½ÓÊÕÕß½ÓÊÕºó¡£Êý¾Ý±ØÐë±»ºÏÊʵÄ×Ö·û¼¯±êʶ¡£3.4.1½ÚÃèÊöÁ˼æÈÝÐÔÎÊÌâ¡£

 

3.7.2¶à²¿·ÖÀàÐÍ£¨Multipart type£©
MIMEÌṩÁËһϵÁÐ"¶à²¿·Ö"ÀàÐÍ---ÔÚµ¥¸öÏûÏ¢Ö÷ÌåÄÚ°ü×°Ò»¸ö»ò¶à¸öʵÌå¡£ËùÓеĶಿ·ÖÀàÐ͹²ÏíÒ»¸ö¹«¹²µÄÓï·¨£¨ÕâÔÚRFC 2046[40]µÄ5.1.1½ÚÖÐÃèÊö£©£¬²¢ÇÒ°üº¬Ò»¸ö±ß½ç£¨boundary£©²ÎÊý×÷Ϊ¶à²¿·ÖýÌåÀàÐÍÖµµÄÒ»²¿·Ö¡£¶à²¿·ÖÀàÐ͵ÄÏûÏ¢Ö÷ÌåÊÇÒ»¸öЭÒéÔªËØ£¬²¢ÇÒ±ØÐëÓÃCRLFÀ´±êʶÌ岿·Ö£¨body-part£¬Òë×¢£º¼ûRFC 2046 µÄ5½Ú£©Ö®¼äµÄ»»ÐС£

²»Í¬ÓÚRFC 2046ÀïµÄ¶à²¿·ÖÏûÏ¢ÀàÐ͵ÄÃèÊö£¬HTTP1.1¹æ¶¨Èκζಿ·ÖÀàÐ͵ÄÏûϢβÉù£¨epilogue£¬Ò룺¼ûRFC 2046¶Ô¶à²¿·ÖÏûÏ¢ÀàÐ͵ĹæÔòÃèÊö£©±ØÐë²»ÄÜ´æÔÚ£»HTTPÓ¦ÓóÌÐò²»ÄÜ´«ÊäβÉù£¨epilogue£©£¨¼´Ê¹Ô­Ê¼µÄ¶à²¿·ÖÏûϢβ²¿°üº¬Ò»¸öβÉù£©¡£´æÔÚÕâЩÏÞÖÆÊÇΪÁ˱£»¤¶à²¿·ÖÏûÏ¢Ö÷ÌåµÄ×ÔÎÒ¶¨½çµÄÌØÐÔ£¬ÒòΪ¶à²¿·Ö±ß½çµÄ½áÊø£¨Òë×¢£º¸ù¾ÝRFC2046Öж¨Ò壬¶à²¿·Ö±ß½ç½áÊøºó¿ÉÄÜ»¹»áÓÐβÉù£©±êÖ¾×ÅÏûÏ¢Ö÷ÌåµÄ½áÊø¡£

ͨ³££¬HTTP°ÑÒ»¸ö¶à²¿·ÖÀàÐ͵ÄÏûÏ¢Ö÷Ì壨message-body£©ºÍÈÎºÎÆäËûýÌåÀàÐ͵ÄÏûÏ¢Ö÷ÌåÏàͬ¶Ô´ý£ºÑϸñ¿´×÷ÓÐÓõĸºÔØÌå¡£ÓÐÒ»¸öÀýÍâ¾ÍÊÇ"multipart/byterange"ÀàÐÍ£¨¸½Â¼19.2£©£¬µ±Ëü³öÏÖÔÚ206£¨²¿·ÖÄÚÈÝ£©ÏìӦʱ£¬´ËÏìÓ¦»á±»Ò»Ð©HTTP»º´æ»úÖÆ½âÎö£¬»º´æ»úÖÆ½«»áÔÚ13.5.4½ÚºÍ14.16½Ú½éÉÜ¡£ÔÚÆäËüÇé¿öÏ£¬Ò»¸öHTTPÓû§´úÀí»á×ñÑ­MIMEÓû§´úÀíÒ»ÑùµÄ»òÕßÏàËÆµÄÐÐΪ£¬ÕâÒÀÀµÓÚ½ÓÊÕºÎÖֶಿ·ÖÀàÐÍ¡£Ò»¸ö¶à²¿·ÖÀàÐÍÏûÏ¢µÄÿһ¸öÌ岿·Ö£¨bady-part£©ÀïµÄMIMEÍ·Óò¶ÔÓÚHTTP²¢Ã»ÓÐÌ«´óÒâÒå³ýÁËMIMEÓïÒâ¡£

ͨ³££¬ Ò»¸öHTTPÓû§´úÀíÓ¦¸Ã×ñÑ­ÓëÒ»¸öMINEÓû§´úÀíÏàͬ»òÏàËÆ¡£Èç¹ûÒ»¸öÓ¦ÓóÌÐòÊÕµ½Ò»¸ö²»ÄÜʶ±ðµÄ¶à²¿·Ö×ÓÀàÐÍ£¬Õâ¸öÓ¦ÓóÌÐò±ØÐ뽫ËüÊÓΪ"multipart/mixed"¡£

×¢:"multipart/form-data"ÀàÐÍÒѾ­±»¹æ·¶µÄ¶¨ÒåΪ´«ËÍ´°ÌåÊý¾Ý£¨Òë×¢£ºÒ»°ãÓô°ÌåÉÏ´«Êý¾Ýʱ£¬ÉÏ´«µÄÊý¾ÝÀàÐ;ÍÊÇΪmultipart/form-dataÀàÐÍ£©£¬µ±ÓÃPOSTÇëÇó·½·¨´¦ÀíÊý¾Ýʱ¡£ÕâÔÚRFC 1867[15]ÀﶨÒå¡£

3.8 ²úÆ·±ê¼Ç £¨product Tokens£©
²úÆ·±ê¼ÇÓòúÆ·ÃûºÍ°æ±¾ºÅʶ±ðͨѶӦÓÃÈí¼þ¡£ºÜ¶àÍ·Óò¶¼»áÀûÓòúÆ·±ê¼Ç£¬ËüÔÊÐí¹¹³ÉÓ¦ÓóÌÐòÖØÒª²¿·ÖµÄ×Ó²úÆ·±»ÒÔ¿Õ°×·Ö¸ôÁо١£Í¨³££¬²úÆ·ÒÔÓ¦ÓóÌÐòµÄÖØÒªÐÔµÄ˳ÐòÀ´Áоٵġ£

       product               = token ["/" product-version]

       product-version       = token

Àý:

User-Agent:CERN-LineMode/2.15 libwww/2.17b3

Server: Apache/0.8.4

²úÆ·±êʾӦÑÔ¼òÒâêà¡£ËüÃDz»ÄÜÓÃÀ´×ö¹ã¸æ»òÆäËû²»ÖØÒªµÄÐÅÏ¢¡£ËäÈ»ÈÎÒ»±ê¼Ç¿ÉÄܳöÏÖproduct-versionÀµ«Õâ¸ö±ê¼Ç½öÄÜÓÃÀ´×öÒ»¸ö°æ±¾ £¨i.e., ͬ²úÆ·ÖеĺóÐø°æ±¾Ó¦¸ÃÔÚproduct-versionÉÏÓÐÇø±ð£©

 

3.9 ÖÊÁ¿Öµ£¨Quality Values£©
HTTPÄÚÈÝЭÉÌ£¨content negotiation£¬12½Ú½éÉÜ£©ÔËÓö̓¸¡µã”Êý×Ö£¨short floating point number£©À´±íÕ벻ͬЭÉ̲ÎÊýµÄÏà¶ÔÖØÒªÐÔ¡£ÖØÒªÐÔµÄȨֵ±»¹æ·¶»¯³ÉÒ»¸ö´Ó0µ½1µÄʵÊý¡£0ÊÇ×îСֵ£¬1ÊÇ×î´óÖµ¡£Èç¹ûÒ»¸ö²ÎÊýµÄÖÊÁ¿Öµ£¨quanlity value£©Îª0£¬ÄÇôÕâ¸ö²ÎÊýµÄÄÚÈݲ»±»¿Í»§¶Ë½ÓÊÜ¡£HTTP/1.1Ó¦ÓóÌÐò²»ÄܲúÉú¶àÓÚÈýλСÊýµÄʵÊý¡£ÏÂÃæ¹æÔòÏÞ¶¨ÁËÕâЩֵ¡£

       qvalue         = £¨ "0" [ "." 0*3DIGIT ] £©

                      | £¨ "1" [ "." 0*3£¨"0"£© ] £©

 "ÖÊÁ¿Öµ" ÊÇÒ»¸ö²»µ±µÄÓôʣ¬ÒòΪÕâЩֵ½ö½ö±íÏÖÒ»ÖÐÏà¶ÔµÄ½µ¼¶¡£

 

3.10 ÓïÑÔ±êÇ© £¨Language Tags£©
Ò»¸öÓïÑÔ±êÇ©±íÕ÷Ò»ÖÖ×ÔÈ»ÓïÑÔ£¬ÕâÖÖ×ÔÈ»ÓïÑÔÄÜ˵£¬ÄÜд£¬»òÕß±»ÓÃÀ´ÈËÓëÈËÖ®¼äµÄ¹µÍ¨¡£¼ÆËã»úÓïÑÔÃ÷ÏÔ²»°üÀ¨ÔÚÄڵġ£HTTPÔÚAccept-LanguageºÍContent-LanguageÍ·ÓòÀïÓ¦Óõ½ÓïÑÔ±êÇ©£¨language tag£©¡£

HTTPÓïÑÔ±êÇ©µÄÓï·¨ºÍ×¢²áºÍRFC 1766[1]Öж¨ÒåµÄÒ»Ñù¡£×ÜÖ®£¬Ò»¸öÓïÑÔ±êÇ©ÊÇÓÉÒ»²¿·Ö»ò¶à²¿·Ö¹¹³É£ºÒ»¸öÖ÷ÓïÑÔ±êÇ©ºÍ¿ÉÄÜΪ¿ÕµÄ×Ó±êǩϵÁС£

        Language-tag      = primary-tag*£¨"-" subtag£©

        primary           = 1*8ALPHA

        subtag            = 1*8ALPHA

±êÇ©Öв»ÔÊÐí³öÏÖ¿Õ¸ñ£¬±êÇ©´óСд²»Ãô¸Ð£¨case-insensitive£©¡£ÓÉIANAÀ´¹ÜÀíÓïÑÔ±êÇ©ÖеÄÃû×Ö¡£µäÐ͵ıêÇ©°üÀ¨:

       en, en-US, en-cockney, i-cherokee, x-pig-latin

ÉÏÃæµÄÈÎÒâÁ½¸ö×ÖĸµÄÖ÷±êÇ©ÊÇÒ»¸öISO-639ÓïÑÔµÄËõ£¬²¢ÇÒÁ½¸ö´óд×ÖĸµÄ×Ó±êÇ©ÊÇÒ»¸öISO-3166µÄ¹ú¼Ò´úÂë¡££¨ÉÏÃæµÄ×îºóÈý¸ö±êÇ©ÊÇδ¾­×¢²áµÄ±êÇ©£»µ«Êdzý×îºóÒ»¸öÖ®ÍâËùÓеıêÇ©¶¼»á½«À´×¢²á£©¡£

 

3.11 ʵÌå±êÇ© £¨Entity Tags£©
ʵÌå±êÇ©±»ÓÃÓڱȽÏÏàͬÇëÇó×ÊÔ´ÖÐÁ½¸ö»ò¸ü¶àʵÌå¡£HTTP/1.1ÔÚETag£¨14.19½Ú£©£¬If-match£¨14.24½Ú£©£¬If-None-match£¨14.26½Ú£©ºÍIf-Rang£¨14.27½Ú£©Í·ÓòÖÐÔËÓÃʵÌå±êÇ©¡£¹ØÓÚËüÃÇÔõÑù±»µ±×÷Ò»¸ö»º´æÑéÖ¤Æ÷£¨cache validator£©¶øÊ¹ÓúͱȽÏÔÚ13.3.3½Ú±»¶¨Òå¡£Ò»¸öʵÌå±êÇ©ÓÉÒ»¸ö¸ø¶¨µÄ»ÞɬµÄÒýÓÃ×Ö·û´®£¨opaque quoted string£©£¬»¹¿ÉÄÜÇ°Ãæ´øÒ»¸öÈõָʾÆ÷×é³É¡£

      entity-tag = [ weak ] opaque-tag

      weak       = "W/"

      opaque-tag = quoted-string

Ò»¸ö“ǿʵÌå±êÇ©”Èç¹û±»Ò»¸ö×ÊÔ´µÄÁ½¸öʵÌåÀï¹²Ïí£¬ÄÇôÕâÁ½¸öʵÌ屨ÐëÔÚ×Ö½ÚÉϵȼۡ£

Ò»¸ö“ÈõʵÌå±êÇ©”ÊÇÒÔ"W/"ǰ׺µÄ£¬Ëü¿ÉÄܻᱻһ¸ö×ÊÔ´µÄÁ½¸öʵÌå¹²Ïí£¬Èç¹ûÕâÁ½¸öʵÌåÊǵȼ۵쬲¢ÇÒÄܱ˴ËÖ®¼äÄÜ»¥ÏàÌæ´ú£¬²¢ÇÒÒ²²»»áÔÚÓïÒåÉÏÓÐÌ«´ó¸Ä±ä¡£Ò»¸öÈõʵÌå±êǩֻÄÜÓÃÓÚÈõ±È½Ï£¨weak comparison£©¡£

ÔÚÒ»¸öÌØ¶¨×ÊÔ´µÄËùÓÐʵÌå°æ±¾Àһ¸öʵÌå±êÇ©±ØÐëÄÜΨһ¡£Ò»¸ö¸ø¶¨µÄʵÌå±êǩֵ¿ÉÒÔ±»ÓÚ²»Í¬µÄURIÇëÇóÓÃÀ´»ñµÃµÄʵÌå¡£ÏàͬʵÌå±êǩֵÔËÓÃÓÚ²»Í¬URIÇëÇó»ñµÃµÄʵÌ壬²¢²»Òâζ×ÅÕâЩʵÌåÊǵȼ۵ġ£

 

3.12 ·¶Î§µ¥Î»£¨Range Units£© 
HTTP/1.1ÔÊÐíÒ»¸ö¿Í»§ÇëÇóÏìӦʵÌåµÄÒ»²¿·Ö¡£HTTP/1.1ÔÚRange£¨14.35½Ú£©ºÍContent-Range£¨14.16½Ú£©Í·ÓòÀïÓ¦Ó÷¶Î§µ¥Î»£¨range units£©¡£ÈκÎʵÌå¸ù¾Ý²»Í¬µÄ½á¹¹»¯µ¥Ôª¶¼Äܱ»·Ö½âÊÇ×Ó·¶Î§

range-unit = bytes-unit | other-range-unit

bytes-unit = "bytes"

other-range-unit = token

HTTP/1.1Öж¨ÒåµÄΨһµÄ·¶Î§µ¥Î»ÊÇ"bytes"¡£HTTP/1.1ʵÏÖʱ¿ÉÄܺöÂÔÆäËûµ¥Î»Ö¸¶¨µÄ·¶Î§¡£

HTTP/1.1±»Éè¼ÆÔÊÐíÓ¦ÓóÌÐòʵÏÖ²»ÒÀ¿¿ÓйضԷ¶Î§µÄÁ˽⡣

4 HTTPÏûÏ¢
4.1 ÏûÏ¢ÀàÐÍ£¨Message Types£©
HTTPÏûÏ¢ÓÉ´Ó¿Í»§µ½·þÎñÆ÷µÄÇëÇóºÍ´Ó·þÎñÆ÷µ½¿Í»§µÄÏìÓ¦×é³É.

             

HTTP-message = Request|Response ;HTTP/1.1

ÇëÇ󣨵Ú5½Ú£©ºÍÏìÓ¦£¨µÚ6½Ú£©ÏûÏ¢ÀûÓÃRFC 822[9]¶¨ÒåµÄ³£ÓÃÏûÏ¢µÄ¸ñʽ£¬ÕâÖÖÏûÏ¢¸ñʽÊÇÓÃÓÚ´«ÊäʵÌ壨ÏûÏ¢µÄ¸ºÔØ£©¡£Á½ÖÖÀàÐ͵ÄÏûÏ¢ÓÉ¿ªÊ¼ÐУ¨start-line£©£¬Áã¸ö»ò¸ü¶à¸öÍ·Óò£¨¾­³£±»³Æ×÷“Í·”£©£¬Ò»¸öָʾͷÓò½áÊøµÄ¿ÕÐУ¨Ò²¾ÍÊÇ£¬Ò»¸öÒÔCRLFΪǰ׺µÄʲôҲûÓеÄÐУ©£¬Ò»¸ö¿ÉÓпÉÎÞµÄÏûÏ¢Ö÷Ì壨message-body£©¡£

generic-message = start-line

*£¨message-header CRLF£©

CRLF

[ message-body ]

start-line = Request-Line | Status-Line

ΪÁ˽¡×³ÐÔ£¬·þÎñÆ÷Ó¦¸ÃºöÂÔÈÎÒâÇëÇóÐУ¨Request-Line£©Ç°ÃæµÄ¿ÕÐС£»»¾ä»°Ëµ£¬Èç¹û·þÎñÆ÷¿ªÊ¼¶ÁÏûÏ¢Á÷µÄʱºò·¢ÏÖÁËÒ»¸öCRLF£¬ËüÓ¦¸ÃºöÂÔÕâ¸öCRLF¡£

Ò»°ãÒ»¸öÓÐÎÊÌâµÄHTTP/1.0¿Í»§¶Ë»áÔÚPOSTÇëÇóÏûÏ¢Ö®ºó²úÉú¶îÍâµÄCRLF¡£ÎªÁËÖØÊöʲôÊÇBNFÃ÷È·½ûÖ¹µÄ£¬Ò»¸öHTTP/1.1¿Í»§¶Ë²»ÄÜÔÚÇëÇóǰºÍÇëÇóºó¼ÓһЩ²»±ØÒªµÄCRLF¡£

4.2 ÏûϢͷ £¨Message Headers£©
HTTPÍ·Óò°üÀ¨³£ÓÃÍ·£¨4.5½Ú£©£¬ÇëÇóÍ·£¨5.3½Ú£©£¬ÏìӦͷ£¨6.2½Ú£©ºÍʵÌåÍ·£¨7.1½Ú£©Óò¡£ËüÃÇ×ñÑ­RFC822[0]3.1½ÚÖиø³öµÄͬһ¸ö³£¹æµÄ¸ñʽ¡£Ã¿Ò»¸öÍ·ÓòÓÉÒ»¸öÃû×Ö£¨ÓòÃû£©¸úËæÒ»¸ö":"ºÍÓòÖµ¹¹³É¡£ÓòÃûÊÇ´óСд²»Ãô¸ÐµÄ¡£ÓòÖµÇ°Ãæ¿ÉÄÜÓÐÈÎÒâÊýÁ¿µÄLWSµÄ¡£µ«SP£¨¿Õ¸ñ£©ÊÇÊ×Ñ¡µÄ¡£Í·ÓòÄܱ»ÑÓÉý¶àÐУ¬Í¨¹ýÔÚÕâЩÐÐÇ°Ãæ¼ÓһЩSP»òHT¡£Ó¦Óó̱¾Ó¦¸Ã×ñÑ­“³£Óøñʽ”µ±²úÉúHTTPÏûϢʱ£¬ÒòΪ¿ÉÄÜ´æÔÚһЩӦÓóÌÐò£¬ËûÃDz»ÄܽÓÊÕÈκγ£ÓÃÐÎʽ֮ÍâµÄÐÎʽ¡£.

message-header = field-name ":" [ field-value ]

field-name = token

field-value = *£¨ field-content | LWS £©

field-content = <the OCTETs making up the field-value

and consisting of either *TEXT or combinations

of token, separators, and quoted-string>

filed-content²»°üÀ¨ÈκÎǰµ¼»òºóÐøµÄLWS£¨ÏßÐÔ¿Õ°×£©:ÏßÐԿհ׳öÏÖÔÚÓòÖµ£¨filed-value£©µÄµÚÒ»¸ö·Ç¿Õ°××Ö·û֮ǰ»ò×îºóÒ»¸ö·Ç¿Õ°××Ö·ûÖ®ºó¡£Ç°µ¼»òºóÐøLWS¿ÉÄÜ»á±»ÒÆ³ý¶ø²»»á¸Ä±äÓòÖµµÄÓïÒâ¡£ÈκγöÏÖÔÚfiled-contentÖ®¼äµÄLWS¿ÉÄܻᱻһ¸öSP´úÌæÔÚ½âÎöÓòֵ֮ǰ»ò°ÑÕâ¸öÏûÏ¢ÍùÏÂÁ÷´«µÝʱ¡£.

²»Í¬ÓòÃûµÄÍ·Óò±»½ÓÊÕµÄ˳ÐòÊDz»ÖØÒªµÄ¡£È»¶ø£¬Ê×ÏÈ·¢Ëͳ£ÓÃÍ·Óò£¬È»ºó½ô½Ó×ÅÊÇÇëÇóÍ·Óò»òÕßÊÇÏìӦͷÓò£¬È»ºóÊÇÒÔʵÌåÍ·Óò½áÊø£¬ÕâÑù×öÊÇÒ»¸öºÃµÄµÄ·½·¨¡£

¶à¸öÏûϢͷÓòʹÓÃͬһ¸öÓòÃû£¨filed-name£©¿ÉÄÜ»á³öÏÖÔÚһЩÏûÏ¢ÖУ¬Èç¹ûÒ»¸öÍ·ÓòµÄÓòÖµ±»¶¨Òå³ÉÒ»¸öÒÔ¶ººÅ¸ô¿ªµÄÁÐ±í¡£°ÑÏàͬÃûµÄ¶à¸öÍ·Óò½áºÏ³ÉÒ»¸ö“ÓòÃû£ºÓòÖµ”¶ÔµÄÐÎʽ¶ø²»¸Ä±äÏûÏ¢µÄÓïÒ⣬¿ÉÒÔͨ¹ý°Ñÿһ¸öºóÐøµÄÓòÖµ¼Óµ½µÚÒ»¸öÀÿһ¸öÓòÖµÓöººÅ¸ô¿ª¡£Í¬ÃûµÄÍ·ÓòµÄ½ÓÊÕ˳Ðò¶ÔºÏ²¢µÄÓòÖµµÄ½âÊÍÓÐÖØÒªÒâÒ壬ËùÒÔ´úÀí£¨proxy£©²»ÄܸıäÓòÖµµÄ˳Ðò£¬µ±Ëü°Ñ´ËÏûÏ¢ÔÙ´Îת·¢Ê±¡£

4.3 ÏûÏ¢Ö÷Ìå £¨Message Body£©
HTTPÏûÏ¢µÄÏûÏ¢Ö÷ÌåÓÃÀ´³ÐÔØÇëÇóºÍÏìÓ¦µÄʵÌåÖ÷Ì壨entity-body£©¡£ÕâЩÏûÏ¢Ö÷Ì壨message-body£©½ö½öµ±´«Êä±àÂ루transfer-coding£©Ó¦ÓÃÓÚ´«ÊäÒëÂ루Transfer-Encoding£©Í·Óòʱ²ÅºÍʵÌåÖ÷Ì壨entity-body£©²»Í¬£¬ÆäËüÇé¿öÏûÏ¢Ö÷ÌåºÍʵÌåÖ÷ÌåÏàͬ¡£´«ÊäÒëÂëÍ·ÓòÔÚ14.41½Ú²ûÊö¡£

     message-body=entity-body|<entity-body encoded as per Transfer-Encoding>

´«ÊäÒëÂëÍ·Óò±»ÓÃÀ´Ö¸Ã÷Ó¦ÓóÌÐòµÄ´«Êä±àÂ룬ËüÊÇΪÁ˱£Ö¤°²È«ºÍÊʺϵÄÏûÏ¢´«Êä¡£´«ÊäÒëÂ루Transfer-Encoding£©Í·ÓòÊÇÏûÏ¢µÄÊôÐÔ£¬¶ø²»ÊÇʵÌåµÄÊôÐÔ£¬²¢ÇÒÑØ×ÅÇëÇó/ÏìÓ¦Á´Äܱ»Ìí¼Ó»òɾ³ý¡££¨È»¶ø£¬3.6½ÚÃèÊöÁËһЩÏÞÖÆµ±Ê¹ÓÃij¸ö´«Êä±àÂëʱ£©

ʲôʱºòÏûÏ¢Ö÷Ì壨message-body£©ÔÊÐí³öÏÖÔÚÏûÏ¢ÖУ¬Õâ¸ù¾Ý²»Í¬ÇëÇóºÍÏìÓ¦À´¾ö¶¨µÄ¡£

ÇëÇóÖÐÏûÏ¢Ö÷Ì壨message-body£©µÄ´æÔÚÊDZ»ÇëÇóÖÐÏûϢͷÓòÖÐÊÇ·ñ´æÔÚÄÚÈݳ¤¶È£¨Content-Length£©»ò´«ÊäÒëÂ루Transfer-Encoding£©Í·ÓòÀ´°µÊ¾µÄ¡£Ò»¸öÏûÏ¢Ö÷Ì壨message-body£©²»Äܱ»°üº¬ÔÚÇëÇóÀïÈç¹ûÇëÇó·½·¨£¨¼û5.1.1½Ú£©²»ÔÊÐíÇëÇóÀï°üº¬ÊµÌåÖ÷Ì壨entity-body£©¡£Ò»¸ö·þÎñÆ÷Ó¦¸ÃÄÜÔĶÁ»òÔÙ´Îת·¢ÇëÇóÀïµÄÏûÏ¢Ö÷Ì壻Èç¹ûÇëÇó·½·¨²»ÔÊÐí°üº¬Ò»¸öʵÌåÖ÷Ì壨entity-body£©£¬ÄÇôÏûÏ¢Ö÷ÌåÓ¦¸Ã±»ºöÂÔµ±·þÎñÆ÷´¦ÀíÕâ¸öÇëÇóʱ¡£

¶ÔÓÚÏìÓ¦ÏûÏ¢£¬ÏûÏ¢ÀïÊÇ·ñ°üº¬ÏûÏ¢Ö÷ÌåÒÀÀµÏàÓ¦µÄÇëÇó·½·¨ºÍÏìӦ״̬Âë¡£ËùÓÐHEADÇëÇó·½·¨µÄÇëÇóµÄÏìÓ¦ÏûÏ¢²»Äܰüº¬ÏûÏ¢Ö÷Ì壬¼´Ê¹ÊµÌåÍ·Óò³öÏÖÔÚÇëÇóÀï¡£ËùÓÐ1XX£¨ÐÅÏ¢µÄ£©£¬204£¨ÎÞÄÚÈݵģ©ºÍ304£¨Ã»ÓÐÐ޸ĵ쩵ÄÏìÓ¦¶¼²»ÄܰüÀ¨Ò»¸öÏûÏ¢Ö÷Ì壨message-body£©¡£ËùÓÐÆäËûµÄÏìÓ¦±ØÐë°üÀ¨ÏûÏ¢Ö÷Ì壬ËäÈ»Ëü¿ÉÄܳ¤¶ÈΪÁã.

4.4 ÏûÏ¢µÄ³¤¶È£¨Message Length£©
Ò»ÌõÏûÏ¢µÄ´«Ê䳤¶È£¨transfer-length£©ÊÇÏûÏ¢Ö÷Ì壨message-body£©µÄ³¤¶È£¬µ±ÏûÏ¢Ö÷Ìå³öÏÖÔÚÏûÏ¢ÖÐʱ£»ÄǾÍÊÇ˵ÔÚʵÌåÖ÷Ìå±»Ó¦ÓÃÁË´«Êä±àÂ루transfer-coding£©ºó¡£µ±ÏûÏ¢ÖгöÏÖÏûÏ¢Ö÷Ìåʱ£¬ÏûÏ¢Ö÷ÌåµÄ´«Ê䳤¶È£¨transfer-length£©ÓÉÏÂÃæ£¨ÒÔÓÅÏÈȨµÄ˳Ðò£©¾ö¶¨£º:

1¡£Èκβ»Äܰüº¬ÏûÏ¢Ö÷Ì壨message-body£©µÄÏûÏ¢£¨ÕâÖÖÏûÏ¢Èç1xx,204ºÍ304ÏìÓ¦ºÍÈκÎHEADÇëÇóµÄÏìÓ¦£©×ÜÊDZ»Í·ÓòºóµÄµÚÒ»¸ö¿ÕÐУ¨Òë×¢:CRLF£©ÖÕÖ¹£¬²»¹ÜÏûÏ¢ÀïÊÇ·ñÓÐʵÌåÍ·Óò£¨entity-header fields£©¡£

2¡£Èç¹ûTransfer-EncodingÍ·Óò£¨¼û14.41½Ú£©³öÏÖ£¬²¢ÇÒËüµÄÓòÖµ²»ÊÇ”identity”£¬ÄÇô´«Ê䳤¶È£¨transfer-length£©±»“¿é”´«Êä±àÂ붨Ò壬³ý·ÇÏûÏ¢ÒòΪ¹Ø±ÕÁ¬½Ó¶ø±»ÖÕ½áÁË¡£

3¡£Èç¹ûContent-LengthÍ·Óò£¨ÊôÓÚʵÌåÍ·Óò£©£¨¼û14.13½Ú£©³öÏÖ£¬ÄÇôËüµÄÊ®½øÖÆÖµ£¨ÒÔ×Ö½Ú±íʾ£©¾Í´ú±íʵÌåÖ÷Ì峤¶È£¨entity-length£¬Òë×¢£ºÊµÌ峤¶ÈÆäʵ¾ÍÊÇʵÌåÖ÷ÌåµÄ³¤¶È£¬ÒÔºó°Ñentity-length·­Òë³ÉʵÌåÖ÷ÌåµÄ³¤¶È£©Ò²´ú±í´«Ê䳤¶È£¨transfer-length£©¡£Content-LengthÍ·Óò²»Äܰüº¬ÔÚÏûÏ¢ÖУ¬Èç¹ûʵÌåÖ÷Ì峤¶È£¨entity-length£©ºÍ´«Ê䳤¶È£¨transfer-length£©Á½Õß²»ÏàµÈ£¨Ò²¾ÍÊÇ˵£¬ÏûÏ¢ÀïÓ¦ÓÃÁË´«ÊäÒëÂ루Transfer-Encoding£©Í·Óò£©¡£Èç¹ûÒ»¸öÏûÏ¢¼´Óд«ÊäÒëÂ루Transfer-Encoding£©Í·Óò²¢ÇÒÒ²Content-LengthÍ·Óò£¬ºóÕ߻ᱻºöÂÔ¡£

4¡£Èç¹ûÏûÏ¢Óõ½Ã½ÌåÀàÐÍ“multipart/byteranges”£¬²¢ÇÒ´«Ê䳤¶È£¨transfer-length£©ÁíÍâҲûÓÐÖ¸¶¨£¬ÄÇôÕâÖÖ×ÔÎÒ¶¨½çµÄýÌåÀàÐͶ¨ÒåÁË´«Ê䳤¶È£¨transfer-length£©¡£ÕâÖÖýÌåÀàÐͲ»Äܱ»ÀûÓóý·Ç·¢ËÍÕßÖªµÀ½ÓÊÕÕßÄÜÔõÑùÈ¥½âÎöËü£» HTTP1.1¿Í»§¶ËÇëÇóÀïÈç¹û³öÏÖRangeÍ·Óò²¢ÇÒ´øÓжà¸ö×Ö½Ú·¶Î§£¨byte-range£©Ö¸Ê¾·û£¬Õâ¾ÍÒâζ×ſͻ§¶ËÄܽâÎömultipart/byterangesÏìÓ¦¡£

Ò»¸öRangeÇëÇóÍ·Óò¿ÉÄܻᱻһ¸ö²»ÄÜÀí½âmultipart/byterangesµÄHTTP1.0´úÀí£¨proxy£©ÔÙ´Îת·¢£»ÔÚÕâÖÖÇé¿öÏ£¬·þÎñÆ÷±ØÐëÄܶ¨½ç´ËÏûÏ¢ÀûÓÃÕâ½ÚµÄ1,3»ò5ÏîÀﶨÒåµÄ·½·¨¡£

5¡£Í¨¹ý·þÎñÆ÷¹Ø±ÕÁ¬½ÓÄÜÈ·¶¨ÏûÏ¢µÄ´«Ê䳤¶È¡££¨¹Ø±ÕÁ¬½Ó²¢²»ÄÜÓÃÀ´Ö¸Ã÷ÇëÇóÏûÏ¢ÌåµÄ½áÊø£¬ÒòΪÕâÑù¿ÉÒÔÈ÷þÎñÆ÷ûÓлú»á¼ÌÐø¸øÓèÏìÓ¦£©¡£

ΪÁËÓëHTTP/1.0Ó¦ÓóÌÐò¼æÈÝ£¬°üº¬HTTP/1.1ÏûÏ¢Ö÷ÌåµÄÇëÇó±ØÐë°üÀ¨Ò»¸öÓÐЧµÄÄÚÈݳ¤¶È£¨Content-Length£©µÄÍ·Óò£¬³ý·Ç·þÎñÆ÷ÊǺÍHTTP/1.1×ñÑ­µÄ¡£Èç¹ûÒ»¸öÇëÇó°üº¬Ò»¸öÏûÏ¢Ö÷Ìå²¢ÇÒûÓиø³öÄÚÈݳ¤¶È£¨Content-Length£©£¬ÄÇô·þÎñÆ÷Ó¦¸ÃÒÔ400ÏìÓ¦£¨´íÎóµÄÇëÇó£©Èç¹ûËû²»ÄÜÅжÏÏûÏ¢³¤¶ÈµÄ»°£¬»òÕßÒÔ411ÏìÓ¦£¨ÒªÇ󳤶ȣ©Èç¹ûËü¼á³ÖÏëÒªÊÕµ½Ò»¸öÓÐЧÄÚÈݳ¤¶È£¨Content-length£©¡£

ËùÓеÄÄܽÓÊÕʵÌåµÄHTTP/1.1Ó¦ÓóÌÐò±ØÐëÄܽÓÊÜ"chunked"µÄ´«Êä±àÂ루3.6½Ú£©£¬Òò´Ë¿ÉÒÔÔÊÐíÕâÖÖ»úÖÆÀ´´¦ÀíÏûÏ¢µ±ÏûÏ¢µÄ³¤¶È²»Äܱ»Ìáǰ¾ö¶¨Ê±¡£

ÏûÏ¢²»ÄÜͬʱ¶¼°üÀ¨ÄÚÈݳ¤¶È£¨Content-Length£©Í·ÓòºÍ·Çidentity´«Êä±àÂë¡£Èç¹ûÏûÏ¢°üÀ¨ÁËÒ»¸ö·ÇidentityµÄ´«Êä±àÂ룬ÄÚÈݳ¤¶È£¨Content-Length£©Í·Óò±ØÐë±»ºöÂÔ.

µ±ÄÚÈݳ¤¶È£¨Content-Length£©Í·Óò³öÏÖÒ»¸ö¾ßÓÐÏûÏ¢Ö÷Ì壨message-body£©µÄÏûÏ¢ÀËüµÄÓòÖµ±ØÐ뾫ȷƥÅäÏûÏ¢Ö÷ÌåÀï×Ö½ÚÊýÁ¿¡£HTTP/1.1Óû§´úÀí±ØÐë֪ͨÓû§µ±Ò»¸öÎÞЧµÄ³¤¶È½ÓÊÕÁË¡£

 

4.5 ³£ÓÃÍ·Óò£¨General Header Fields£©
ÓÐһЩͷÓò¼´ÊÊÓÃÓÚÇëÇóÒ²ÊÊÓÃÓÚÏìÓ¦ÏûÏ¢£¬µ«ÊÇÕâЩͷÓò²¢²»Êʺϱ»´«ÊäµÄʵÌå¡£ÕâЩͷÓòÖ»ÄÜÓ¦ÓÃÓë±»´«ÊäµÄÏûÏ¢¡£

general-header = Cache-Control ; Section 14.9

| Connection ; Section 14.10

| Date ; Section 14.18

| Pragma ; Section 14.32

| Trailer ; Section 14.40

| Transfer-Encoding ; Section 14.41

| Upgrade ; Section 14.42

| Via ; Section 14.45

| Warning ; Section 14.46

³£ÓÃÍ·ÓòµÄÃûÄܱ»À©Õ¹£¬µ«ÕâÒªºÍЭÒé°æ±¾µÄ±ä»¯Ïà½áºÏ¡£È»¶ø£¬ÐµĻòʵÑéÐÔµÄÍ·Óò¿ÉÄܱ»¸³Óè³£ÓÃÍ·ÓòµÄÓïÒ⣬Èç¹ûͨÐÅÀïµÄËùÓвÎÓëÕß¶¼ÈÏΪËûÃÇÊdz£ÓÃÍ·Óò¡£²»±»Ê¶±ðµÄÍ·Óò»á±»×÷ΪʵÌåÍ·£¨entity-header£©Í·ÓòÀ´¿´´ý¡£

5 ÇëÇó£¨Request£©
Ò»¸öÇëÇóÏûÏ¢ÊÇ´Ó¿Í»§¶Ëµ½·þÎñÆ÷¶ËµÄ£¬ÔÚÏûÏ¢Ê×ÐÐÀï°üº¬·½·¨£¬×ÊԴָʾ·û£¬Ð­Òé°æ±¾¡£

Request = Request-Line ; Section 5.1

*£¨£¨ general-header ; Section 4.5

| request-header ; Section 5.3

| entity-header £© CRLF£© ; Section 7.1

CRLF

[ message-body ] ; Section 4.3

5.1 ÇëÇóÐÐ £¨Request-Line£©
ÇëÇóÐУ¨Request-Line£©ÊÇÒÔÒ»¸ö·½·¨±ê¼Ç¿ªÊ¼£¬ºóÃæ¸úËæRequest-URIºÍЭÒé°æ±¾£¬×îºóÒÔCRLF½áÊø¡£ÔªËØÊÇÒÔSP×Ö·û·Ö¸ô¡£CR»òLFÊDz»±»ÔÊÐíµÄ³ýÁË×îºóµÄCRLF¡£

      Request-Line =Method SP Request-URL SP HTTP-Version CRLF

5.1.1·½·¨ £¨Method£©
 ·½·¨±ê¼ÇָʾÁËÔÚ±»Request-URIÖ¸¶¨µÄ×ÊÔ´ÉÏÖ´Ðеķ½·¨¡£ÕâÖÖ·½·¨ÊÇ´óСдÃô¸ÐµÄ¡£

 Method     = "OPTIONS"                     ;9.2½Ú

             | "GET"                        ;9.3½Ú

             | "HEAD"                       ;9.4½Ú

             |"POST"                        ;9.5½Ú

             |"PUT"                         ;9.6½Ú

             |"DELETE"                      ;9.7½Ú

             |"TRACE"                       ;9.8½Ú

             |"CONNECT"                     ;9.9½Ú

             | extension-method

Extension-method = token

×ÊÔ´ÔÊÐíµÄ·½·¨ÓÉAllowÍ·ÓòÖ¸¶¨£¨14.7½Ú£©¡£ÏìÓ¦µÄ·µ»ØÂë×ÜÊÇ֪ͨ¿Í»§ÊÇ·ñÒ»¸ö·½·¨¶ÔÒ»¸ö×ÊÔ´ÔÚµ±Ç°ÊDZ»ÔÊÐíµÄ£¬ÒòΪ±»ÔÊÐíµÄ·½·¨¼¯ºÏÄܱ»¶¯Ì¬µÄ¸Ä±ä¡£Ò»¸öÔ´·þÎñÆ÷Ó¦¸Ã·µ»Ø405״̬Â루·½·¨²»ÄÜÔÊÐí£©Èç¹û´Ë·½·¨¶ÔÓÚÒ»¸öÇëÇó×ÊÔ´ÔÚ·þÎñÆ÷ÄÇÀï²»±»ÔÊÐí£¬²¢ÇÒ·µ»Ø501״̬Â루ûÓÐʵÏÖ£©Èç¹û´Ë·½·¨²»±»Ô´·þÎñÆ÷ʶ±ð»òʵÏÖ¡£·½·¨GETºÍHEAD±ØÐë±»ËùÓг£¹æÄ¿µÄµÄ·þÎñÆ÷Ö§³Ö¡£ËùÓÐÆäËüµÄ·½·¨ÊÇ¿ÉÑ¡µÄ£»È»¶ø£¬Èç¹ûÉÏÃæµÄËùÓз½·¨¶¼±»ÊµÏÖ£¬ÕâЩ·½·¨±ØÐë×ñÑ­µÄÓïÒâºÍµÚ9½ÚÖ¸¶¨µÄÏàͬ¡£

5.1.2ÇëÇóURL£¨Request-URI£©
Request-URIÊÇÒ»ÖÖÈ«Çòͳһ×ÊÔ´±êʶ·û£¨£³.2 ½Ú£©£¬²¢ÇÒËüÖ¸¶¨ÇëÇóµÄ×ÊÔ´¡£

    Request-URI   ="*" | absoluteURI | abs_path | authotity

Request-URIµÄOPTIONSÒÀÀµÓÚÇëÇóµÄÐÔÖÊ¡£ÐǺÅ"*"Òâζ×ÅÇëÇó²»ÄÜÓ¦ÓÃÓÚÒ»¸öÌØ¶¨µÄ×ÊÔ´£¬µ«ÊÇÄÜÓ¦ÓÃÓÚ·þÎñÆ÷£¬²¢ÇÒÖ»Äܱ»ÔÊÐíµ±Ê¹Óõķ½·¨²»ÄÜÓ¦ÓÃÓÚ×ÊÔ´µÄʱºò¡£¾ÙÀýÈçÏÂ

             OPTIONS  *  HTTP/1.1

µ±Ïò´úÀí£¨proxy£©Ìá½»ÇëÇóʱ£¬¾ø¶ÔURI£¨absoluteRUI£©ÊDz»¿ÉȱÉٵġ£´úÀí£¨proxy£©¿ÉÄܻᱻҪÇóÔÙ´Îת¼Ä´ËÇëÇó¡£×¢Ò⣺´úÀí¿ÉÄÜÔÙ´ÎÌá½»´ËÇëÇóµ½ÁíÒ»¸ö´úÀí»òÖ±½Ó¸øÔ´·þÎñÆ÷¡£ÎªÁ˱ÜÃâÑ­»·ÇëÇ󣬴úÀí£¨proxy£©±ØÐëÄÜʶ±ðËùÓеķþÎñÆ÷Ãû×Ö£¬°üÀ¨ÈκαðÃû£¬±¾µØ±äÁ¿£¬Êý×ÖIPµØÖ·¡£Ò»¸öÇëÇóÐУ¨Request-Line£©µÄÀý×ÓÈçÏ£º

     £ÇET http://www.w3.org/pub/www/TheProject.html HTTP/1.1

ΪÁËδÀ´HTTP°æ±¾µÄËùÓÐÇëÇóÄÜÇ¨ÒÆµ½¾ø¶ÔURI£¨absoluteURI£©µØÖ·£¬ËùÓлùÓÚ£ÈTTP/1.1µÄ·þÎñÆ÷±ØÐë½ÓÊܾø¶ÔURLµØÖ·£¬¼´Ê¹HTTP/1.1µÄ¿Í»§¶ËÖ»Ïò´úÀí²úÉú¸ø¾ø¶ÔURI£¨absoluteURI£©¡£

authority²¿·ÖÖ»±»ÓÃÓÚCONNECT·½·¨£¨£¹.9½Ú£©£®

Request-URI´ó¶àÊýÇé¿öÊDZ»ÓÃÓÚÖ¸¶¨Ò»¸öÔ´·þÎñÆ÷»òÍø¹Ø£¨gateway£©ÉϵÄ×ÊÔ´¡£ÕâÖÖÇé¿öÏ£¬URIµÄ¾ø¶Ô·¾¶£¨abs_path£©±ØÐë±»ÓÃ×÷Request-URI£¬²¢ÇÒ´ËURI£¨authority£©µÄÍøÂçλÖñØÐëÔÚHostÍ·ÓòÀïÖ¸³ö¡£ÀýÈ磺¿Í»§Ï£ÍûÖ±½Ó´ÓÔ´·þÎñÆ÷»ñÈ¡×ÊÔ´£¬ÕâÖÖÇé¿öÏ£¬Ëü¿ÉÄܻὨÁ¢Ò»¸öTCPÁ¬½Ó£¬´ËÁ¬½ÓÊÇÌØ¶¨ÓÚÖ÷»ú”www.w3.org”µÄ80¶Ë¿ÚµÄ£¬ÕâÊǻᷢËÍÏÂÃæÐУº

   GET  /pub/WWW/TheProject.html  HTTP/1.1

   Host£ºwww.w3.org

½ÓÏÂÀ´ÊÇÇëÇóµÄÆäËû²¿·Ö£¬×¢Òâ¾ø¶Ô·¾¶²»ÄÜÊǿյģ»Èç¹ûÔÚԭʼµÄURIÀïûÓгöÏÖ¾ø¶Ô·¾¶£¬±ØÐë¸ø³ö"£¯"£¨·þÎñÆ÷¸ùĿ¼£©£®

Request-URIÊÇÒÔ3.2.1½ÚÀïÖ¸¶¨µÄ¸ñʽ´«Êä¡£Èç¹ûRequest-URIÓÃ"%HEX HEX"[42]±àÂ룬Դ·þÎñÆ÷ΪÁ˽âÎöÇëÇó±ØÐëÄܽâÂëËü¡£·þÎñÆ÷½ÓÊÕµ½Ò»¸öÎÞЧµÄRequest-URIʱ±ØÐëÒÔÒ»¸öºÏÊʵÄ״̬ÂëÏìÓ¦¡£

͸Ã÷´úÀí£¨proxy£©²»ÄÜÖØÐ´½ÓÊÕµ½µÄRequest-URIÀïµÄ”abs_path”µ±Ëüת¼Ä´ËÇëÇóµ½ÏÂÒ»¸ö·þÎñÆ÷ʱ£¬³ýÁ˸ù¾ÝÉÏÃæÉùÃ÷µÄ°ÑÒ»¸ö¿ÕµÄabs_pathÓÔ/”´úÌæ¡£

×¢£º²»ÖØÐ´µÄ¹æÔò·ÀÖ¹ÁË´úÀí£¨proxy£©¸Ä±äÇëÇóµÄÒâ˼£¬µ±Ô´·þÎñÆ÷²»ÄÜÕýÈ·µÄÀûÓ÷DZ£Áô£¨non-reserved£©µÄURI×Ö·ûʱ ¡£ÊµÏÖÕßÓ¦¸ÃÖªµÀijЩpre-HTTP/1.1´úÀí£¨proxy£©ÄÜÖØÐ´Request-URI¡£

5.2ÇëÇó×ÊÔ´ £¨The Resource Identified by a Request£©
ÇëÇóÀï×ÊÔ´µÄ¾«È·¶¨Î»ÊÇÓÉÇëÇóÀïµÄRequest-URIºÍHostÍ·Óò¾ö¶¨µÄ¡£

Èç¹ûÔ´·þÎñÆ÷×ÊÔ´²»ÒÀÀµÓÚÇëÇóµÄHostÍ·ÓòÖ¸¶¨µÄÖ÷»ú£¨Òë×¢£º¿ÉÄÜ»á´æÔÚÐéÄâÖ÷»ú£©£¬ÄÇôËü»áºöÂÔÇëÇóµÄÍ·Óòµ±Ëü¾ö¶¨Æä×ÊÔ´µÄʱºò¡££¨¶ÔÓÚÒ»¸öÖ§³ÖHostµÄHTTP/1.1·þÎñÆ÷£¬ÔÚ19.6.1.1½ÚÃèÊöÁËÆäËûµÄÐèÇó£©.

Ô´·þÎñÆ÷Èç¹û¸ù¾ÝÇëÇóÀïµÄÖ÷»úÇø±ð×ÊÔ´£¨ÕâÊÇÒòΪ´æÔÚÐéÄâÖ÷»úºÍÐéÄâÖ÷»úÃû£©£¬Ëü±ØÐë×ñÑ­ÏÂÃæµÄ¹æÔòÈ¥¾ö¶¨ÇëÇóµÄ×ÊÔ´µ±³öÏÖÒ»¸öHTTP/1.1ÇëÇóʱ£º

£±£® Èç¹ûRequest-URIÊǾø¶ÔµØÖ·£¨absoluteURI£©£¬ÕâʱÇëÇóÀïµÄÖ÷»ú´æÔÚÓÚRequest-URIÀï¡£ÈκγöÏÖÔÚÇëÇóÀïHostÍ·ÓòÖµÓ¦µ±±»ºöÂÔ¡£

£²£® ¼ÙÈçRequest-URI²»ÊǾø¶ÔµØÖ·£¨absoluteURI£©£¬²¢ÇÒÇëÇó°üÀ¨Ò»¸öHostÍ·Óò£¬ÔòÖ÷»úÓɸÃHostÍ·ÓòÖµ¾ö¶¨£®

£³£® ¼ÙÈçÓɹæÔò£±»ò¹æÔò£²¶¨ÒåµÄÖ÷»úÊÇÒ»¸öÎÞЧµÄÖ÷»ú£¬ÔòÓ¦µ±ÒÔÒ»¸ö400£¨´íÎóÇëÇ󣩴íÎóÏûÏ¢·µ»Ø¡£

ȱÉÙHostÍ·ÓòµÄHTTP/1.0ÇëÇóµÄ½ÓÊÕÕß¿ÉÄÜ»áÍÆ²â¾ö¶¨Ê²Ã´ÑùµÄ×ÊÔ´±»ÇëÇó£¨ÀýÈ磺¼ì²éURIµÄ·¾¶¶ÔÓÚij¸öÌØ¶¨µÄÖ÷»úÊÇΨһµÄ£©¡£

5.3ÇëÇó±¨Í·Óò £¨Request Header Fields£©
ÇëÇóÍ·ÓòÔÊÐí¿Í»§¶Ë´«µÝÇëÇóµÄ¸½¼ÓÐÅÏ¢ºÍ¿Í»§¶Ë×Ô¼ºµÄ¸½¼ÓÐÅÏ¢¸ø·þÎñÆ÷¡£ÕâЩͷÓò×÷ΪÇëÇóµÄÐÞÊηû£¬ÕâºÍ³ÌÐòÓïÑÔ·½·¨µ÷ÓõIJÎÊýÓïÒåÊÇÒ»ÑùµÄ¡£

   ÇëÇóÍ·£¨request-header£© = Accept            ;14.1½Ú

                         | Accept-Charset       ;14.2½Ú

                          |Accept-Encoding         ;14.3½Ú

                          |Accept-Language        ;14.4½Ú

                          |Authorization       ;14.8½Ú

                          |Expect                       ;14.20½Ú

                          |From            ;14.22½Ú

                          |Host                ;14.23½Ú

                          |If-Match         ;14.24½Ú

                          |If-Modified-Since       ;14.25½Ú

                          | If-None-Match            ;14.26½Ú

                          | If-Range                 ;14.27½Ú

                          | If-Unmodified-Since   ;14.28½Ú

                          | Max-Forwards        ;14.31½Ú

                          | Proxy-Authorization  ;14.34½Ú

                          | Range            ;14.35½Ú

                         | Referer           ;14.36½Ú

                          |TE                           ;14.39½Ú

                          | User-Agent           ;14.43½Ú

ÇëÇóÍ·ÓòµÄÃû×ÖÊÇÄܽáºÏÓÚЭÒé°æ±¾¶øÄܱ»À©Õ¹µÄ¡£È»¶øÐµĻòʵÑéÐÔµÄÍ·ÓòÓ¦¸Ã±»¸ø³öÇëÇóÍ·ÓòµÄÓïÒåÈç¹ûͨÐŵÄËùÓз½¶¼°ÑËü¿´×÷ÇëÇóÍ·Óò¡£²»ÄÜʶ±ðµÄÍ·Óò»á±»¿´×÷ʵÌåÍ·Óò£¨entity-header£©¡£

£¶ ÏìÓ¦ £¨Response£©
½ÓÊպͷ­ÒëÒ»¸öÇëÇóÏûÏ¢ºó£¬·þÎñÆ÷·¢³öÒ»¸öHTTPÏìÓ¦ÏûÏ¢¡£

     response   £½Status-Line                           ;6.1½Ú

           *£¨£¨ general-header£©                           ; 4.5½Ú

                       | response-header     ;6.2½Ú

                       | entity-header£©CRLF£©   ;7.1½Ú

                      CRLF

                      [ message-body ]        ;7.2½Ú

6.1 ״̬ÐÐ £¨Status-Line£©
ÏìÓ¦ÏûÏ¢µÄµÚÒ»ÐÐÊÇ״̬ÐУ¨stauts-Line£©£¬ÓÉЭÒé°æ±¾ÒÔ¼°Êý×Ö״̬ÂëºÍÏà¹ØµÄÎı¾¶ÌÓï×é³É,¸÷²¿·Ö¼äÓÿոñ·û¸ô¿ª£¬³ýÁË×îºóµÄ»Ø³µ»ò»»ÐÐÍ⣬Öм䲻ÔÊÐíÓлسµ»»ÐУ®

   Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

6.1.1״̬ÂëÓëÔ­Òò¶ÌÓï £¨Status Code and Reason Phrase£©
״̬ÂëÊÇÊÔͼÀí½âºÍÂú×ãÇëÇóµÄÈýλÊý×ÖµÄÕûÊýÂ룬ÕâЩÂëµÄÍêÕû¶¨ÒåÔÚµÚʮա£Ô­Òò¶ÌÓReason-Phrase£©ÊÇΪÁ˸ø³öµÄ¹ØÓÚ״̬ÂëµÄÎı¾ÃèÊö¡£×´Ì¬ÂëÓÃÓÚ¿ØÖÆÌõ¼þ£¬¶øÔ­Òò¶ÌÓReason-Phrase£©ÊÇÈÃÓû§±ãÓÚÔĶÁ¡£¿Í»§¶Ë²»ÐèÒª¼ì²éºÍÏÔʾԭÒò¶ÌÓï¡£

״̬ÂëµÄµÚһλÊý×Ö¶¨ÒåÏìÓ¦ÀàÐÍ¡£ºóÁ½Î»Êý×ÖûÓÐÈκηÖÀà½ÇÉ«¡£µÚһλÊý×ÖÓÐÎåÖÖÖµ£º

-1xx: ±¨¸æµÄ         - ½ÓÊÕµ½ÇëÇ󣬼ÌÐø½ø³Ì.

-2xx ³É¹¦           - ²½Öè³É¹¦½ÓÊÕ£¬±»Àí½â£¬²¢±»½ÓÊÜ

-3xx ÖØ·¢           - ΪÁËÍê³ÉÇëÇó,±ØÐë²ÉÈ¡½øÒ»²½´ëÊ©.

-4xx ¿Í»§¶Ë³ö´í     - ÇëÇó°üÀ¨´íµÄ˳Ðò»ò²»ÄÜÍê³É.

-5xx ·þÎñÆ÷³ö´í     - ·þÎñÆ÷ÎÞ·¨Íê³ÉÏÔÈ»ÓÐЧµÄÇëÇó.

ÏÂÃæÁоÙÁËΪHTTP/1.1¶¨ÒåµÄ̬ÂëÖµ£¬ºÍ¶ÔÓ¦µÄÔ­Òò¶ÌÓReason-Phrase£©µÄÀý×Ó¡£Ô­Òò¶ÌÓïÔÚÕâÀïÀý¾ÙÖ»Êǽ¨ÒéÐÔµÄ----ËüÃÇÒ²Ðí±»Ò»¸ö¾Ö²¿µÄµÈ¼ÛÌå´úÌæ¶ø²»»áÓ°Ïì´ËЭÒéµÄÓïÒå¡£

 Status-Code £½

        "100" ; 10.1.1½Ú: ¼ÌÐø    

           |"101"   ; 10.1.2½Ú: ת»»Ð­Òé     

           |"200"   ; 10.2.1½Ú: OK

      |"201"   ; 10.2.2½Ú:   ´´½¨         

        |"202"   ; 10.2.3½Ú:   ½ÓÊÜ         

     |"203"   ; 10.2.4½Ú: ·ÇȨÍþÐÅÏ¢   

        |"204"   ;   10.2.5½Ú: ÎÞÄÚÈÝ       

        |"205"   ;   10.2.6½Ú: ÖØÖÃÄÚÈÝ      

        |"206"   ;   10.2.7½Ú: ¾Ö²¿ÄÚÈÝ      

        |"300"   ;   10.3.1½Ú: ¶àÑùÑ¡Ôñ      

        |"301"   ;   10.3.2½Ú: ÓÀ¾ÃÒÆ¶¯      

       |"302"   ;   10.3.3½Ú: ´´½¨          

        |"303"   ;   10.3.4½Ú: ¹Û²ì±ðµÄ²¿·Ö          

        |"304"   ;   10.3.5½Ú: Ö»¶Á                  

        |"305"   ;   10.3.6½Ú: Óû§´úÀí              

        |"307"   ;   10.3.8½Ú   ÁÙÊ±ÖØ·¢              

       |"400"   ;   10.4.1½Ú: »µÇëÇó                

        |"401"   ;   10.4.2½Ú: δÊÚȨµÄ              

      |"402"   ;   10.4.3½Ú: ±ØÒªµÄÖ§¸¶            

      |"403"   ;   10.4.4½Ú: ½ûÓà                 

      |"404"   ;   10.4.5½Ú: ûÕÒµ½                 

      |"405"   ;   10.4.6½Ú: ²»ÔÊÐíµÄ·½Ê½          

      |"406"   ;   10.4.7½Ú: ²»½ÓÊÜ                 

      |"407"   ;   10.4.8½Ú: ÐèÒª´úÀíÑéÖ¤

      |"408"   ;   10.4.9½Ú£º ÇëÇó³¬Ê±              

      |"409"   ;   10.4.10½Ú£» ³åÍ»                  

      |"410"   ;   10.4.11½Ú£º Í£Ö¹                  

      |"411"   ;   10.4.12½Ú£º ÐèÒªµÄ³¤¶È            

      |"412"   £» 10.4.13½Ú£» Ô¤´¦Àíʧ°Ü            

      |"413"   ;   10.4.14½Ú£º ÇëÇóʵÌåÌ«´ó      

      |"414"   ;   10.4.15½Ú£» ÇëÇó-URIÌ«´ó      

      |"415"   ;   10.4.16½Ú£º ²»Ö§³ÖµÄýÌåÀàÐÍ   

      |"416"   £» 10.4.17½Ú£º ÇëÇóµÄ·¶Î§²»Âú×ã  

      |"417"   ;   10.4.18½Ú£º ÆÚÍûʧ°Ü           

      |"500"   ;   10.5.1½Ú:   ·þÎñÆ÷ÄÚ²¿´íÎó       

      |"501"   ;   10.5.2½Ú:   ²»ÄÜʵÏÖ             

      |"502"   ;   10.5.3½Ú:   »µÍø¹Ø               

      |"503"   ;   10.5.4½Ú:   ·þÎñ²»ÄÜʵÏÖ         

      |"504"   ;   10.5.5½Ú:   Íø¹Ø³¬Ê±             

      |"505"   ;   10.5.6½Ú:   HTTP°æ±¾²»Ö§³Ö  

      |À©Õ¹Âë   

extension-code =3DIGIT

Reason-Phrase = *<TEXT,excluding CR,LF>

HTTP״̬ÂëÊÇ¿ÉÀ©Õ¹µÄ¡£HTTPÓ¦ÓóÌÐò²»ÐèÒªÀí½âËùÓÐÒÑ×¢²á״̬ÂëµÄº¬Ò壬¾¡¹ÜÄÇÑùµÄÀí½âÏÔ¶øÒ×¼ûÊǺܺÏËãµÄ¡£µ«ÊÇ£¬Ó¦ÓóÌÐò±ØÐëÁ˽âÓɵÚһλÊý×ÖÖ¸¶¨µÄ״̬ÂëµÄÀàÐÍ£¬ÈκÎδ±»Ê¶±ðµÄÏìÓ¦Ó¦±»¿´×÷ÊǸÃÀàÐ͵Äx00״̬£¬ÓÐÒ»¸öÀýÍâ¾ÍÊÇδ±»Ê¶±ðµÄÏìÓ¦²»ÄÜ»º´æ¡£ÀýÈ磬Èç¹û¿Í»§¶ËÊÕµ½Ò»¸öδ±»Ê¶±ðµÄ״̬Âë431£¬Ôò¿ÉÒÔ°²È«µÄ¼Ù¶¨ÇëÇóÓÐ´í£¬²¢ÇÒËü»á¶Ô´ý´ËÏìÓ¦¾ÍÏñËü½ÓÊÕÁËÒ»¸ö״̬ÂëÊÇ400µÄÏìÓ¦¡£ÔÚÕâÖÖÇé¿öÏ£¬Óû§´úÀí£¨user agent£©Ó¦µ±°ÑʵÌåºÍÏìÓ¦Ò»ÆðÌá½»¸øÓû§£¬ÒòΪʵÌåºÜ¿ÉÄܰüÀ¨È˿ɶÁµÄ¹ØÓÚ½âÊͲ»Õý³£×´Ì¬µÄÐÅÏ¢¡£

£¶.2ÏìӦͷÓò £¨Response Header Fields£©
ÏìӦͷÓòÔÊÐí·þÎñÆ÷´«ËÍÏìÓ¦µÄ¸½¼ÓÐÅÏ¢£¬ÕâЩÐÅÏ¢²»ÄÜ·ÅÔÚ״̬ÐУ¨Status-Line£©Àï.¡£ÕâЩͷÓò¸ø³öÓйطþÎñÆ÷µÄÐÅÏ¢ÒÔ¼°ÇëÇóURI£¨Request-URI£©Ö¸¶¨µÄ×ÊÔ´µÄ¸ü½øÒ»²½µÄ·ÃÎÊ¡£

   response-header = Accept-Ranges          ; 14.5½Ú

                   |Age         ; 14.6½Ú

                   |Etag            ; 14.19½Ú

                   |Location          ; 14.30½Ú

                   |Proxy-Autenticate     ; 14.33½Ú

                   |Retry-After     ; 14.37½Ú

                   |Server      ; 14.38½Ú

                   |Vary        ; 14.44½Ú

                   |WWW-Authenticate ; 14.47½Ú

ÏìӦͷÓòµÄÃû×ÖÄÜÒÀÀµÓÚЭÒé°æ±¾µÄ±ä»¯¶øÀ©Õ¹¡£È»¶ø£¬ÐµĻòÕßʵÑéÐÔµÄÍ·Óò¿ÉÄÜ»á¸øÓÚÏìӦͷÓòµÄÓïÒåÈç¹ûͨÐŵijÉÔ±¶¼ÄÜʶ±ðËûÃDz¢°ÑËûÃÇ¿´×÷ÏìӦͷÓò¡£²»±»Ê¶±ðµÄÍ·Óò±»¿´×÷ʵÌåÍ·Óò¡£

7 ʵÌ壨Entity£©
Èç¹û²»±»ÇëÇóµÄ·½·¨»òÏìÓ¦µÄ״̬ÂëËùÏÞÖÆ£¬ÇëÇóºÍÏìÓ¦ÏûÏ¢¶¼¿ÉÒÔ´«ÊäʵÌå¡£ ʵÌå°üÀ¨ÊµÌåÍ·Óò£¨entity-header£©ÓëʵÌåÖ÷Ì壨entity-body£©£¬¶øÓÐЩÏìÓ¦Ö»°üÀ¨ÊµÌåÍ·Óò£¨entity-header£©¡£

ÔÚ±¾½ÚÖеķ¢ËÍÕߺͽÓÊÕÕßÊÇ·ñÊǿͻ§¶Ë»ò·þÎñÆ÷£¬ÕâÒÀÀµÓÚË­·¢ËÍ»òË­½ÓÊÕ´ËʵÌå¡£

7.1 ʵÌ屨ÎÄÓò£¨Entity Header Fields£©
ʵÌ壨entity-header£©Í·Óò¶¨ÒåÁ˹ØÓÚʵÌåÖ÷ÌåµÄµÄÔªÐÅÏ¢£¬»òÔÚÎÞÖ÷ÌåµÄÇé¿ö϶¨ÒåÁËÇëÇóµÄ×ÊÔ´µÄÔªÐÅÏ¢¡£ÓÐЩԪÐÅÏ¢ÊÇ¿ÉÑ¡µÄ£»Ò»Ð©ÊDZØÐëµÄ¡£

entity-header = Allow ; Section 14.7

| Content-Encoding ; Section 14.11

| Content-Language ; Section 14.12

| Content-Length ; Section 14.13

| Content-Location ; Section 14.14

| Content-MD5 ; Section 14.15

| Content-Range ; Section 14.16

| Content-Type ; Section 14.17

| Expires ; Section 14.21

| Last-Modified ; Section 14.29

| extension-header

extension-header = message-header

À©Õ¹Í·»úÖÆÔÊÐíÔÚ²»¸Ä±äЭÒéµÄǰÌá϶¨Òå¶îÍâµÄʵÌåÍ·Óò£¬µ«²»±£Ö¤ÕâЩÓòÔÚ½ÓÊÕ¶ËÄܹ»±»Ê¶±ð¡£Î´±»Ê¶±ðµÄÍ·ÓòÓ¦µ±±»½ÓÊÕÕߺöÂÔ£¬ÇÒ±ØÐ뱻͸Ã÷´úÀí£¨transparent proxy£©×ª·¢¡£

7.2 ʵÌåÖ÷Ì壨Entity Body£©
ÓÉHTTPÇëÇó»òÏìÓ¦·¢Ë͵ÄʵÌåÖ÷Ì壨Èç¹û´æÔڵϰ£©µÄ¸ñʽÓë±àÂ뷽ʽӦÓÉʵÌåµÄÍ·Óò¾ö¶¨¡£

    Entity-body= *OCTET

Èç4¡£3½ÚËùÊö£¬ÊµÌåÖ÷Ì壨entity-body£©Ö»Óе±ÏûÏ¢Ö÷Ìå´æÔÚʱʱ²Å´æÔÚ¡£ÊµÌåÖ÷Ì壨entity-body£©´ÓÏûÏ¢Ö÷Ìåͨ¹ý´«ÊäÒëÂëÍ·Óò£¨Transfer-Encoding£©ÒëÂëµÃµ½£¬´«ÊäÒëÂëÓÃÓÚÈ·±£ÏûÏ¢µÄ°²È«ºÍºÏÊʵĴ«Êä¡£

7.2.1ÀàÐÍ£¨Type£©
µ±ÏûÏ¢°üº¬ÊµÌåÖ÷Ì壨entity-body£©Ê±£¬Ö÷ÌåµÄÊý¾ÝÀàÐÍÓÉʵÌåÍ·ÓòContent-TypeºÍContent-Encoding¾ö¶¨¡£ÕâЩͷÓò¶¨ÒåÁËÁ½²ãµÄ˳ÐòµÄ±àÂëÄ£ÐÍ£º

    Entity-body£º=Content-Encoding£¨ Content-Type£¨ data£© £©

Content-TypeÖ¸¶¨ÁËϲãÊý¾ÝµÄýÌåÀàÐÍ¡£Content-Encoding¿ÉÄܱ»ÓÃÀ´Ö¸¶¨¸½¼ÓµÄÓ¦ÓÃÓÚÊý¾ÝµÄÄÚÈݱàÂ룬¾­³£ÓÃÓÚÊý¾ÝѹËõµÄÄ¿µÄ£¬ÄÚÈݱàÂëÊÇÇëÇó×ÊÔ´µÄÊôÐÔ¡£Ã»ÓÐȱʡµÄÒëÂë¡£

ÈÎÒ»°üº¬ÁËʵÌåÖ÷ÌåµÄHTTP/1.1ÏûÏ¢¶¼Ó¦°üÀ¨Content-TypeÍ·ÓòÒÔ¶¨ÒåʵÌåÖ÷ÌåµÄýÌåÀàÐÍ¡£Èç¹û²¢ÇÒÖ»ÓÐýÌåÀàÐÍûÓÐͨ¹ýContent-TypeÍ·ÓòÖ¸¶¨Ê±£¬½ÓÊÕÕß¿ÉÄ᳢ܻÊԲ²âýÌåÀàÐÍ£¬Õâͨ¹ý¹Û²ìʵÌåÖ÷ÌåµÄÄÚÈݲ¢ÇÒ/»òÕßͨ¹ý¹Û²ìURIÖ¸¶¨×ÊÔ´µÄÀ©Õ¹Ãû¡£Èç¹ûýÌåÀàÐÍÈÔÈ»²»ÖªµÀ£¬½ÓÊÕÕßÓ¦¸Ã°ÑÀàÐÍ¿´×÷”application/octec-stream”¡£

7.2.2ʵÌåÖ÷Ì峤¶È£¨Entity Length£©
ÏûÏ¢µÄʵÌåÖ÷Ì峤¶ÈÖ¸µÄÊÇÏûÏ¢Ö÷ÌåÔÚ±»Ó¦ÓÃÓÚ´«Êä±àÂ루transfer-coding£©Ö®Ç°µÄ³¤¶È¡£4.4½Ú¶¨ÒåÁËÔõÑùȥȷ¶¨ÏûÏ¢Ö÷ÌåµÄ´«Ê䳤¶È¡£

8 Á¬½Ó
8.1 ³ÖÐøÁ¬½Ó£¨Persistent Connection£©¡£
8.1.1Ä¿µÄ
ÔÚ³ÖÐøÁ¬½Ó֮ǰ£¬Îª»ñȡÿһ¸öURLÖ¸¶¨µÄ×ÊÔ´¶¼±ØÐ뽨Á¢Á˶ÀÁ¢µÄTCP Á¬½Ó£¬ Õâ¾Í¼ÓÖØÁËHTTP·þÎñÆ÷µÄ¸ºµ££¬Ò×ÒýÆð»¥ÁªÍøµÄ×èÈû¡£Ç¶ÈëµÄͼƬÓëÆäËüÏà¹ØÊý¾Ýͨ³£Ê¹Óû§ÔÚ¶Ìʱ¼äÄÚ¶Ôͬһ·þÎñÆ÷Ìá½»¶à¸öÇëÇó¡£Ä¿Ç°ÒÑÓÐÕë¶ÔÕâЩÐÔÄÜÎÊÌâµÄ·ÖÎöÒÔ¼°Ô­ÐÍʵÏֵĽá¹û[26][30]¡£ ¶ÔÆäËû·½·¨Ò²ÓÐÁ˳õ²½Ì½¾¿£¬ÈçT/TCP [27]¡£

³ÖÐøHTTP Á¬½ÓÓÐ×ÅÖî¶àµÄÓŵ㣺

--- ͨ¹ý½¨Á¢Óë¹Ø±Õ½ÏÉÙµÄTCPÁ¬½Ó£¬²»½ö½ÚÊ¡ÁË·ÓÉÆ÷ÓëÖ÷»ú£¨¿Í»§¶Ë£¬·þÎñÆ÷£¬´úÀí·þÎñÆ÷£¬Íø¹Ø£¬ËíµÀ»ò»º´æ£©µÄCPUʱ¼ä£¬»¹½ÚÊ¡ÁËÖ÷»úÓÃÓÚTCPЭÒé¿ØÖÆ¿éµÄÄÚ´æ¡£

---ÄÜÔÚÁ¬½ÓÉϽøÐÐÁ÷Ë®ÏßÇëÇó·½Ê½¡£ Á÷Ë®ÏßÇëÇó·½Ê½ÄÜÔÊÐí¿Í»§¶ËÖ´Ðжà´ÎÇëÇó¶ø²»Óõȴýÿһ¸öÇëÇóµÄÏìÓ¦£¨Òë×¢£º¼´¿Í»§¶Ë¿ÉÒÔ·¢ËÍÇëÇó¶ø²»ÓõȴýÒÔǰµÄÇëÇóµÄÏìÓ¦µ½À´ºóÔÙ·¢ÇëÇ󣩣¬²¢ÇÒ´Ëʱֻ½øÐÐÁËÒ»¸öTCPÁ¬½Ó£¬´Ó¶øÐ§Âʸü¸ß£¬¼õÉÙÁËʱ¼ä¡£

--- ÍøÂç×èÈû»á±»¼õÉÙ£¬ÕâÊÇÓÉÓÚTCPÁ¬½Óºó¼õÉÙÁ˰üµÄÊýÁ¿£¬²¢ÇÒÓÉÓÚÔÊÐíTCPÓгä·ÖµÄʱ¼äÈ¥¾ö¶¨ÍøÂç×èÈûµÄ״̬¡£

--- ÒòΪÎÞÐëÔÚ´´½¨TCPÁ¬½ÓʱµÄÎÕÊÖÉϺķÑʱ¼ä£¬¶øÊ¹ºóÐøÇëÇóµÄµÈ´ýʱ¼ä¼õÉÙ¡£

---HTTP¸Ä½øµÄÔ½À´Ô½ºÃ£¬ÒòΪÔÚ²»ÐèÒª¹Ø±ÕTCPÁ¬½ÓµÄ´ú¼ÛÏ¿ÉÒÔ±¨¸æ´íÎó¡£½«À´µÄHTTP°æ±¾¿Í»§¶Ë¿ÉÒÔÀֹ۵ij¢ÊÔÒ»¸öеÄÌØÐÔ£¬µ«ÊÇÈç¹ûºÍÀϵķþÎñÆ÷ͨÐÅʱ£¬ÔÚ´íÎó±»±¨¸æºó¾ÍÒªÓþɵÄÓïÒå¶ø½øÐÐÖØÐ³¢ÊÔÁ¬½Ó¡£

HTTPʵÏÖÓ¦¸ÃʵÏÖ³Ö¾ÃÁ¬½Ó¡£

8.1.2×ÜÌå²Ù×÷
HTTP/1.1 ÓëÔçÆÚHTTP °æ±¾µÄÒ»¸öÏÔÖøÇø±ðÔÚÓÚ³ÖÐøÁ¬½ÓÊÇÈκÎHTTP/1.1Á¬½ÓµÄȱʡ·½Ê½¡£Ò²¾ÍÊÇ˵£¬³ý·ÇÁíÓÐÖ¸¶¨£¬¿Í»§¶Ë×ÜÓ¦µ±¼Ù¶¨·þÎñÆ÷»á±£³Ö³ÖÐøÁ¬½Ó£¬¼´±ãÔÚ½Óµ½·þÎñÆ÷µÄ³ö´íÏìӦʱҲӦÈç´Ë¡£

³ÖÐøÁ¬½ÓÌṩÁËÒ»ÖÖ¿ÉÒÔÓɿͻ§¶Ë»ò·þÎñÆ÷·¢ÐźÅÀ´ÖÕÖ¹TCPÁ¬½ÓµÄ»úÖÆ¡£ÀûÓÃConnectÍ·Óò£¨14¡£10½Ú£©¿ÉÒÔ²úÉúÖÕÖ¹Á¬½ÓÐźš£Ò»µ©³öÏÖÁËÖÕÖ¹Á¬½ÓµÄÐźţ¬¿Í»§¶Ë±ã²»¿ÉÔÙÏò´ËÁ¬½ÓÌá³öÈκÎÐÂÇëÇó¡£

8.1.2.1 ЭÉÌ£¨Negotiation£©
³ý·ÇÇëÇóµÄConnectÍ·ÓòÖаüº¬ÁË"close"±êÇ©£¬HTTP/1.1·þÎñÆ÷×Ü¿ÉÒÔ¼Ù¶¨HTTP/1.1 ¿Í»§¶ËÏëҪά³Ö³ÖÐøÁ¬½Ó£¨persistent connection£©¡£Èç¹û·þÎñÆ÷ÏëÔÚ·¢³öÏìÓ¦ºóÁ¢¼´¹Ø±ÕÁ¬½Ó£¬ËüÓ¦µ±·¢ËÍÒ»¸öº¬”close”µÄConnectÍ·Óò¡£

Ò»¸öHTTP/1.1¿Í»§¶Ë¿ÉÄÜÆÚÍû±£³ÖÁ¬½ÓÒ»Ö±¿ª×Å£¬µ«Õâ±ØÐëÊÇ»ùÓÚ·þÎñÆ÷ÏìÓ¦ÀïÊÇ·ñ°üº¬Ò»¸öConnectÍ·Óò²¢ÇÒ´ËÍ·ÓòÀïÊÇ·ñ°üº¬”close”¡£Èç¹û¿Í»§¶Ë²»ÏëΪ¸ü¶àµÄÇëÇóά³ÖÁ¬½Ó£¬ËüÓ¦¸Ã·¢ËÍÒ»¸öֵΪ”close”µÄConnectÍ·Óò¡£

Èç¹û¿Í»§¶ËºÍ·þÎñÆ÷Ö®Ò»ÔÚ·¢Ë͵ÄConnectÍ·ÓòÀï°üº¬”close”£¬ÄÇô¿Í»§¶ËµÄÇëÇ󽫻á±äΪ´ËÁ¬½ÓµÄ×îºóÒ»¸öÇëÇ󡣡£

¿Í»§¶ËºÍ·þÎñÆ÷²»Ó¦¸ÃÈÏΪ³ÖÐøÁ¬½ÓÊǵÍÓÚ1.1µÄHTTP°æ±¾ËùÓµÓе쬳ý·ÇËü±»ÏÔʾµØÖ¸Ã÷ÁË¡£19.6.2½ÚÖ¸³öÁ˸úHTTP/1.1¿Í»§¶Ë¼æÈݵĸü¶àÐÅÏ¢¡£

 

8.1.2.2 Á÷Ë®Ïߣ¨pilelining£©
Ö§³Ö³ÖÐøÁ¬½Ó£¨persistent conncetio£©µÄ¿Í»§¶Ë¿ÉÒÔÒÔÁ÷Ë®Ïߵķ½Ê½·¢ËÍÇëÇ󣨼´ÎÞÐëµÈ´ýÏìÓ¦¶ø·¢ËͶà¸öÇëÇ󣩡£·þÎñÆ÷±ØÐë°´½ÓÊÕÇëÇóµÄ˳Ðò·¢ËÍÏìÓ¦¡£

¼Ù¶¨³ÖÐøÁ¬½Ó²¢ÇÒÔÚÁ¬½Ó½¨Á¢ºó½øÐÐÁ÷Ë®Ïß·½Ê½ÇëÇóµÄ¿Í»§¶ËÓ¦¸Ã×¼±¸È¥ÖØÐ³¢ÊÔËûÃǵÄÁ¬½ÓÈç¹ûµÚÒ»¸öÁ÷Ë®ÏßÇëÇó·½Ê½³¢ÊÔʧ°Ü¡£Èç¹û¿Í»§¶ËÖØÐ³¢ÊÔÁ¬½Ó£¬ÔÚ¿Í»§¶ËÖªµÀÁ¬½ÓÊdzÖÐøÖ®Ç°¿Í»§¶Ë²»ÄܽøÐÐÁ÷Ë®Ïß·¢ËÍÇëÇ󡣿ͻ§¶Ë±ØÐë×¼±¸È¥ÖØÐ·¢ËÍÇëÇóÈç¹û·þÎñÆ÷ÔÚÏìÓ¦ËùÓжÔÓ¦µÄÇëÇó֮ǰ¹Ø±ÕÁ¬½Ó

¿Í»§¶Ë²»Ó¦¸ÃÀûÓ÷ǵÈÃݵķ½·¨»òÕ߷ǵÈÃݵķ½·¨ÐòÁУ¨¼û9.1.2½Ú£©½øÐÐÁ÷Ë®Ïß·½Ê½µÄÇëÇó¡£·ñÔòÒ»¸ö¹ýÔçµÄ´«Êä²ãÁ¬½ÓµÄÖÕÖ¹¿ÉÄܻᵼÖ²»È·¶¨µÄ½á¹û¡£Ò»¸ö¿ÉÄÜÏ£Íû·¢ËÍÒ»¸ö·ÇµÈÃÝ·½·¨ÇëÇóµÄ¿Í»§¶ËÖ»ÓнÓÊÕÁËÉÏ´ÎËü·¢³öÇëÇóµÄÏìÓ¦ºó²ÅÄÜÔٴη¢ËÍÇëÇó¸ø·þÎñÆ÷¡£

8.1.3´úÀí·þÎñÆ÷ £¨Proxy Servers£©
ËüÊǷdz£ÖØÒªµÄÒòΪ´úÀí·þÎñÆ÷ÕýÈ·µØÊµÏÖÁËConnectÍ·ÓòµÄÊôÐÔ£¬ÕâÔÚ14.10½ÚÖ¸³öÁË¡£

´úÀí·þÎñÆ÷±ØÐë·Ö±ðÏòºÍËüÏàÁ¬µÄ¿Í»§¶Ë»òÕßÔ´·þÎñÆ÷£¨»òÆäËûµÄ´úÀí·þÎñÆ÷£©Ö¸Ã÷³ÖÐøÁ¬½Ó¡£Ã¿Ò»¸ö³ÖÐøÁ¬½ÓÖ»ÄÜÓ¦ÓÃÓÚÒ»¸ö´«Êä²ãÁ¬½Ó¡£

´úÀí·þÎñÆ÷²»ÄܺÍÒ»¸öHTTP/1.0¿Í»§¶Ë½¨Á¢Ò»¸öHTTP/1.1³ÖÐøÁ¬½Ó£¨µ«ÊDzμûRFC2068[33]ÀïµÄ¹ØÓÚÐí¶àHTTP/1.1¿Í»§¶ËÀûÓÃKeep-AliveÍ·ÓòµÄÎÊÌâµÄÌÖÂÛ£©¡£

8.1.4ʵ¼ÊµÄ¿¼ÂÇ £¨Practical Considerations£©
·þÎñÆ÷ͨ³£ÓÐÒ»¸öʱÏÞÖµ£¬³¬¹ýÒ»¶¨Ê±¼ä¼´²»ÔÙά³Ö´¦ÓڷǻµÄÁ¬½Ó¡£´úÀí·þÎñÆ÷»áѡһ¸ö½Ï¸ßµÄÖµ£¬ÒòΪ¿Í»§¶ËºÜ¿ÉÄÜ»áÓëͬһ·þÎñÆ÷½¨Á¢¶à¸öÁ¬½Ó¡£³ÖÐøÁ¬½Ó·½Ê½µÄ²ÉÓöÔÓÚ¿Í»§¶ËÓë·þÎñÆ÷µÄʱÏÞ¾ùδÌá³öÈκÎÒªÇó¡£

µ±¿Í»§¶Ë»ò·þÎñÆ÷Ï£Íû³¬Ê±ÖÕֹʱ£¬ ËüÓ¦¸Ã°´¹æ·¶ÖÕÖ¹´«ÊäÁ¬½Ó¡£¿Í»§¶ËÓë·þÎñÆ÷¶ËӦʼÖÕ×¢Òâ¶Ô·½ÊÇ·ñÖÕÖ¹ÁËÁ¬½Ó£¬²¢Êʵ±µÄÓèÒÔÏìÓ¦¡£Èô¿Í»§¶Ë»ò·þÎñÆ÷δÄܼ°Ê±¼ì²âµ½¶Ô·½ÒÑÖÕÖ¹ÁËÁ¬½Ó£¬½«»áÔì³É²»±ØÒªµÄÍøÂç×ÊÔ´ÀË·Ñ¡£

¿Í»§¶Ë£¬·þÎñÆ÷£¬»ò´úÀí·þÎñÆ÷¿ÉÄÜÔÚÈÎÒâʱ¿Ì»áÖÕÖ¹´«ÊäÁ¬½Ó¡£±ÈÈ磬¿Í»§¶Ë¿ÉÄÜÕýÏë·¢³öеÄÇëÇ󣬶ø´Ëʱ·þÎñÆ÷È´¾ö¶¨¹Ø±Õ"ÏÐÖÃ"µÄÁ¬½Ó¡£ÔÚ·þÎñÆ÷¿´À´£¬Á¬½ÓÒѾ­ÒòΪÏÐÖñ»¹Ø±ÕÁË£¬ µ«¿Í»§¶ËÈÏΪÎÒÕýÔÚÇëÇó¡£

Õâ±íÃ÷¿Í»§¶Ë£¬·þÎñÆ÷Óë´úÀí·þÎñÆ÷±ØÐëÓÐÄÜÁ¦´ÓÒì²½µÄÁ¬½ÓÖÕֹʼþÖлָ´¡£Ö»ÒªÇëÇóÊǵÈÃݵ썼û9.1.2½Ú£©£¬¿Í»§¶ËÈí¼þÓ¦¸ÃÄÜÖØÐ´ò¿ª´«Êä²ãÁ¬½Ó²¢ÖØÐ´«ÊäÒÅÆúµÄÇëÇóÐòÁжø²»ÐèÒªÓû§½øÐн»»¥À´ÊµÏÖ¡£¶Ô·ÇµÈÃÝ·½·¨µÄÇëÇó²»ÄÜ×Ô¶¯½øÐÐÖØÊÔÇëÇ󣬾¡¹Ü¿Í»§´úÀí£¨user agent£©¿ÉÄÜÄÜÌṩһ¸öÈ˹¤²Ù×÷È¥ÖØÊÔÕâЩÇëÇó¡£Ó¦¸ÃÓÃÓû§´úÀí£¨user-agent£©Èí¼þ¶ÔÓ¦ÓóÌÐòÓïÒåʶ±ðµÄÈ·ÈÏÀ´Ìæ´úÓû§µÄÈ·ÈÏ¡£Èç¹ûÔÙ´ÎÖØÊÔÇëÇóʧ°Ü£¬ÄÇô¾Í²»ÄÜÔÙ½øÐÐÖØ¸´ÇëÇóÁË¡£

·þÎñÆ÷¾¡¿ÉÄÜÓ¦¸ÃÔÚÿ´ÎÁ¬½ÓÖÐÖÁÉÙÏìÓ¦Ò»¸öÇëÇó¡£³ý·Ç³öÓÚÍøÂç»ò¿Í»§¶ËµÄ¹ÊÕÏ£¬·þÎñÆ÷²»Ó¦ÔÚ´«ËÍÏìÓ¦µÄÖÐ;¶Ï¿ªÁ¬½Ó¡£

ʹÓóÖÐøÁ¬½ÓµÄ¿Í»§¶ËÓ¦ÏÞÖÆÓëijһ·þÎñÆ÷ͬʱÁ¬½ÓµÄ¸öÊý¡£µ¥Óû§¿Í»§¶Ë²»Ó¦ÓëÈÎÒ»·þÎñÆ÷»ò´úÀí·þÎñÆ÷±£³ÖÁ½¸öÒÔÉϵÄÁ¬½Ó¡£´úÀí·þÎñÆ÷ÓëÆäËü·þÎñÆ÷»ò´úÀí·þÎñÆ÷Ö®¼äӦά»¤2*N¸öÁ¬½Ó£¬ÆäÖÐNÊÇͬʱÔÚÏßµÄÓû§Êý¡£ÕâЩ׼ÔòÊÇΪÁ˸ÄÉÆÏìӦʱ¼äºÍºÍ±ÜÃâ×èÈû¡£

8.2 ÏûÏ¢´«ËÍÒªÇó£¨Message Transmission Requirements£©
8.2.1³ÖÐøÁ¬½ÓÓëÁ÷Á¿¿ØÖÆ £¨Persistent Connections and Flow Control£©
HTTP/1.1·þÎñÆ÷Ó¦µ±±£³Ö³ÖÐøÁ¬½Ó²¢Ê¹ÓÃTCPÁ÷Á¿¿ØÖÆ»úÖÆÀ´½â¾öÁÙʱ¹ýÔØ£¬¶ø²»ÊÇÔÚÖÕÖ¹Á¬½ÓºóÖ¸Íû¿Í»§¶ËµÄÖØÊÔ¡£ºóÒ»·½·¨»á¶ñ»¯ÍøÂç×èÈû¡£

8.2.2¼àÊÓÁ¬½ÓÖгö´í״̬µÄÏûÏ¢
HTTP/1.1£¨»ò¸üУ©¿Í»§¶ËÓ¦ÔÚ·¢ËÍÏûÏ¢Ö÷ÌåµÄʱºòͬʱ¼àÊÓÍøÂçÁ¬½ÓÊÇ·ñ´¦ÓÚ³ö´í״̬¡£Èô¿Í»§¶Ë·¢ÏÖÁË´íÎó£¬ËüÓ¦µ±Á¢¼´Í£Ö¹ÏûÏ¢Ö÷ÌåµÄµÄ´«ËÍ¡£ÈôÕýÎÄÊÇÒÔ¿é´«Êä±àÂ뷽ʽ·¢Ë͵ģ¨3.6½Ú£©£¬¿ÉÒÔÓó¤¶ÈΪÁãµÄ¿éºÍ¿Õβ²¿À´Ìáǰ±ê¼Ç±¨ÎĽáÊø¡£ÈôÏûÏ¢Ö÷ÌåǰÓÐContent-LengthÍ·Óò£¬Ôò¿Í»§¶Ë±ØÐë¹Ø±ÕÁ¬½Ó¡£

8.2.3 100״̬ÂëµÄÓÃ;
100״̬Â루¼ÌÐø£¬¼û10.1.1½Ú£©µÄÄ¿µÄÔÚÓÚÔÊÐí¿Í»§¶ËÅж¨·þÎñÆ÷ÊÇ·ñÔ¸Òâ½ÓÊܿͻ§¶Ë·¢À´µÄÏûÏ¢Ö÷Ì壨»ùÓÚÇëÇóÍ·Óò£©ÔÚ¿Í»§¶Ë·¢ËÍ´ËÇëÇóÏûÏ¢Ö÷Ìåǰ¡£ ÔÚÓÐЩÇé¿öÏ£¬Èç¹û·þÎñÆ÷¾Ü¾ø²é¿´ÏûÏ¢Ö÷Ì壬Õâʱ¿Í»§¶Ë·¢ËÍÏûÏ¢Ö÷ÌåÊDz»ºÏÊʵĻò»á½µµÍЧÂÊ¡£

HTTP/1.1¿Í»§¶ËµÄÒªÇó£º

--- Èô¿Í»§¶ËÒªÔÚ·¢ËÍÇëÇóÏûÏ¢Ö÷Ìå֮ǰµÈºò100£¨¼ÌÐø£©ÏìÓ¦£¬ÔòËü±ØÐë·¢ËÍÒ»¸öExpectÇëÇóÍ·Óò£¨¼û14.20½Ú£©£¬²¢ÇÒÖµÊÇ”100-continue”¡£

--- ¿Í»§¶Ë²»ÄÜ·¢ËÍÒ»¸öÖµÊÇ”100-continue”µÄExpectÇëÇóÍ·Óò£¬Èç¹û´Ë¿Í»§¶Ë²»´òËã·¢ËÍ´øÏûÏ¢Ö÷ÌåµÄÇëÇó¡£

ÓÉÓÚ´æÔھɵÄʵÏÖ·½·¨£¬Ð­ÒéÔÊÐí¶þÒåÐÔµÄÇéÐδæÔÚ£¬ÕâÔÚ¿Í»§¶ËÔÚ·¢ËÍ”Expect:100-continue”ºó¶øÃ»ÓнÓÊÕÒ»¸ö417£¨ÆÚÍûʧ°Ü£©×´Ì¬Âë»ò×Å100£¨¼ÌÐø£©×´Ì¬ÂëµÄÇé¿öÏ·¢Éú¡£Òò´Ë£¬µ±Ò»¸ö¿Í»§¶Ë·¢ËÍ´ËÍ·Óò¸øÒ»¸öÔ´·þÎñÆ÷£¨¿ÉÄÜͨ¹ý´úÀí£©£¬´Ë·þÎñÆ÷ҲûÓÐÒÔ100£¨¼ÌÐø£©×´Ì¬ÂëÏìÓ¦£¬ÄÇô¿Í»§¶Ë²»Ó¦¸ÃÔÚ·¢ËÍÇëÇóÏûÏ¢µÄÖ÷ÌåǰÎÞÏ޵ȴý¡£

HTTP’/1.1Ô´·þÎñÆ÷µÄÒªÇó£º

--- µ±½ÓÊÕÒ»¸ö°üº¬ÖµÎª”100-contitue”µÄExpectÇëÇóÍ·ÓòµÄÇëÇóʱ£¬Ô´·þÎñÆ÷±ØÐë»òÕßÒÔ100£¨¼ÌÐø£©×´Ì¬ÂëÏìÓ¦²¢ÇÒ¼ÌÐø´ÓÊäÈëÁ÷Àï½ÓÊÕÊý¾Ý£¬»òÕßÒÔfinal״̬ÂëÏìÓ¦¡£Ô´·þÎñÆ÷²»ÄÜÔÚ·¢ËÍ100£¨¼ÌÐø£©×´Ì¬ÂëÏìӦ֮ǰ½ÓÊÕÇëÇóÖ÷Ìå¡£Èç¹û·þÎñÆ÷ÒÔfinal״̬ÂëÏìÓ¦ºó£¬Ëü¿ÉÄÜ»á¹Ø±Õ´«Êä²ãÁ¬½Ó»òÕßËüÒ²¿ÉÄÜ»á¼ÌÐø½ÓÊÕ»òÒÅÆúÊ£ÓàµÄÇëÇó¡£µ«ÊǼÈÈ»Ëü·µ»ØÁËÒ»¸öfinal״̬ÂëµÄÏìÓ¦£¬Ëü¾Í²»ÄÜÔÙÈ¥ÄǸöÖ´ÐÐÇëÇóµÄ·½·¨£¨È磺POST·½·¨£¬PUT·½·¨£©¡£

--- ÈçÇëÇóÏûÏ¢²»º¬ÖµÎª"100-continue"µÄExpectÇëÇóÍ·Óò£¬ Ô´·þÎñÆ÷²»Ó¦·¢ËÍ100£¨¼ÌÐø£©ÏìÓ¦¡£µ±ÇëÇóÀ´×ÔHTTP/1.0£¨»ò¸üÔ磩µÄ¿Í»§¶ËʱҲ²»µÃ·¢ËÍ100£¨¼ÌÐø£©ÏìÓ¦¡£¶Ô´Ë¹æ¶¨ÓÐÒ»ÀýÍ⣺ΪÁËÓëRFC 2068¼æÈÝ£¬Ô´·þÎñÆ÷¿ÉÄܻᷢËÍÒ»¸ö100£¨¼ÌÐø£©×´Ì¬ÏìÓ¦ÒÔÏìÓ¦HTTP/1.1µÄPUT»òPOStÇëÇó£¬ËäÈ»ÕâЩÇëÇóÖÐûÓаüº¬ÖµÎª”100-continue”µÄExpectÇëÇóÍ·Óò¡£Õâ¸öÀýÍâµÄÄ¿µÄÊÇΪÁ˼õÉÙÈκοͻ§¶ËÒòΪµÈ´ý100£¨¼ÌÐø£©×´Ì¬ÏìÓ¦µÄÑÓʱ£¬µ«´ËÀýÍâÖ»ÄÜÓ¦ÓÃÓÚHTTP/1.1ÇëÇ󣬲¢²»ÊʺÏÓÚÆäËûHTTP°æ±¾µÄÇëÇó¡£

--- ÈôÒѾ­½ÓÊÕµ½²¿·Ö»òÈ«²¿ÇëÇóµÄÏûÏ¢µÄÖ÷Ì壬Դ·þÎñÆ÷¿ÉÒÔ²»ÐèÒª·¢100£¨¼ÌÐø£©ÏìÓ¦¡£

--- ·¢ËÍ100£¨¼ÌÐø£©ÏìÓ¦µÄÔ´·þÎñÆ÷±ØÐë×îÖÕÄÜ·¢ËÍÒ»¸öfinal״̬ÏìÓ¦£¬Ò»µ©ÇëÇóÏûÏ¢Ö÷Ìå±»Ëü½ÓÊÕµ½²¢ÇÒÒѾ­±»Ëü´¦ÀíÁË£¬³ý·ÇÔ´·þÎñÆ÷¹ýÔçÇжÏÁË´«Êä²ãÁ¬½Ó¡£

--- ÈôÔ´·þÎñÆ÷½ÓÊÕµ½²»º¬ÖµÎª"100-contitue"µÄExpectÇëÇóÍ·ÓòµÄÇëÇ󣬸ÃÇëÇóº¬ÓÐÇëÇóÏûÏ¢Ö÷Ì壬¶ø·þÎñÆ÷ÔÚ´Ó´«Êä²ãÁ¬½ÓÉϽÓÊÕÕû¸öÇëÇóÏûÏ¢Ö÷Ìåǰ·µ»ØÒ»¸öfinalµÄ״̬ÏìÓ¦£¬ÄÇô´ËÔ´·þÎñÆ÷²»Äܹرմ«Êä²ãÁ¬½ÓÖ±µ½Ëü½ÓÊÕÁËÕû¸öÇëÇó»òÕßÖ±µ½¿Í»§¶Ë¹Ø±ÕÁË´ËÁ¬½Ó¡£·ñÔò¿Í»§¶Ë¿ÉÄܲ»»áÐÅÈνÓÊÕ´ËÏìÓ¦ÏûÏ¢¡£È»¶ø£¬ÕâÒ»ÒªÇó²»Ó¦¸Ã±»½âÊÍÓÃÀ´·ÀÖ¹·þÎñÆ÷µÖ¿¹·þÎñ¹¥»÷£¬»òÕß·ÀÖ¹·þÎñÆ÷±»¿Í»§¶ËʵÏÖ¹¥»÷¡£

¶ÔHTTP/1.1´úÀí·þÎñÆ÷µÄÒªÇó£º

--- Èô´úÀí·þÎñÆ÷½Óµ½Ò»¸öÇëÇ󣬴ËÇëÇó°üº¬ÖµÎª"100-continue"µÄExpectÇëÇóÍ·Óò£¬²¢ÇÒ´úÀí·þÎñÆ÷¿ÉÄÜÖªµÀÏÂÒ»Õ¾µãµÄ·þÎñÆ÷×ñÑ­HTTP/1.1»ò¸ü¸ß°æÐ­Ò飬»òÕß²»ÖªµÀÏÂÒ»Õ¾µã·þÎñÆ÷µÄHTTP°æ±¾£¬ÄÇôËü±ØÐë°üº¬´ËExpectÍ·ÓòÀ´×ª·¢´ËÇëÇó¡£

--- Èô´úÀí·þÎñÆ÷ÖªµÀÏÂÒ»Õ¾µã·þÎñÆ÷°æ±¾ÊÇHTTP/1.0»ò¸üµÍ£¬ÔòËü²»ÄÜת·¢´ËÇëÇ󣬲¢ÇÒËü±ØÐëÒÔ417£¨ÆÚÍûʧ°Ü£©×´Ì¬ÏìÓ¦¡£

--- ´úÀí·þÎñÆ÷Ó¦µ±Î¬»¤Ò»¸ö»º´æ£¬ÒԼǼ×î½ü·ÃÎÊÏÂÒ»Õ¾µã·þÎñÆ÷µÄHTTP°æ±¾ºÅ¡£

--- Èô½ÓÊÕµ½µÄÇëÇóÀ´×ÔÓÚ°æ±¾ÊÇHTTP/1.0£¨»ò¸üµÍ£©µÄ¿Í»§¶Ë£¬²¢ÇÒ´ËÇëÇ󲻺¬ÖµÎª"100-continue"µÄExpectÇëÇóÍ·Óò£¬ÄÇô´úÀí·þÎñÆ÷²»ÄÜת·¢100£¨¼ÌÐø£©ÏìÓ¦¡£ ÕâÒ»ÒªÇó¿É¸²¸Ç1xxÏìӦת·¢µÄÒ»°ã¹æÔò£¨²Î¼û10.1½Ú£©¡£

8.2.4·þÎñÆ÷¹ýÔç¹Ø±ÕÁ¬½Óʱ¿Í»§¶ËµÄÐÐΪ
Èç¹ûHTTP/1.1 ¿Í»§¶Ë·¢ËÍÒ»Ìõº¬ÓÐÏûÏ¢Ö÷ÌåµÄÇëÇóÏûÏ¢£¬µ«²»º¬ÖµÎª"100-continue"µÄExpectÇëÇóÍ·Óò£¬²¢ÇÒ¿Í»§¶ËÖ±½ÓÓëHTTP/1.1Ô´·þÎñÆ÷ÏàÁ¬£¬²¢ÇÒ¿Í»§¶ËÔÚ½ÓÊÕµ½·þÎñÆ÷µÄ״̬ÏìӦ֮ǰ¿´µ½ÁËÁ¬½ÓµÄ¹Ø±Õ£¬ÄÇô¿Í»§¶ËÓ¦¸ÃÖØÊÔ´ËÇëÇó¡£ÔÚÖØÊÔʱ£¬¿Í»§¶Ë¿ÉÒÔÀûÓÃÏÂÃæµÄËã·¨À´»ñµÃ¿É¿¿µÄÏìÓ¦¡£

1£® Ïò·þÎñÆ÷·¢ÆðÒ»ÐÂÁ¬½Ó¡£

2£® ·¢ËÍÇëÇëÇóÍ·Óò¡£

3£® ³õʼ»¯±äÁ¿R£¬Ê¹RµÄֵΪͨÍù·þÎñÆ÷µÄÍù·µÊ±¼äµÄ¹À¼ÆÖµ£¨±ÈÈç»ùÓÚ½¨Á¢Á¬½ÓµÄʱ¼ä£©£¬»òÔÚÎÞ·¨¹À¼ÆÍù·µÊ±¼äʱÉèΪһ³£ÊýÖµ5Ãë¡£

4£® ¼ÆËãT=R*£¨2**N£©£¬NΪ´ËÇ°ÖØÊÔÇëÇóµÄ´ÎÊý¡£

5£® µÈ´ý·þÎñÆ÷³ö´íÏìÓ¦£¬»òÊǵȴýTÃ루Á½ÕßÖÐʱ¼ä½Ï¶ÌµÄ£©¡£

6£® ÈôûµÈµ½³ö´íÏìÓ¦£¬TÃëºó·¢ËÍÇëÇóµÄÏûÏ¢Ö÷Ìå¡£

7£® Èô¿Í»§¶Ë·¢ÏÖÁ¬½Ó±»Ìáǰ¹Ø±Õ£¬×ªµ½µÚ1²½£¬Ö±µ½ÇëÇó±»½ÓÊÜ£¬½ÓÊÕµ½³ö´íÏìÓ¦£¬»òÊÇÓû§Òò²»ÄÍ·³¶øÖÕÖ¹ÁËÖØÊÔ¹ý³Ì¡£

ÔÚÈÎÒâµãÉÏ£¬¿Í»§¶ËÈç¹û½ÓÊÕµ½·þÎñÆ÷µÄ³ö´íÏìÓ¦£¬¿Í»§¶Ë

--- ²»Ó¦ÔÙ¼ÌÐø·¢ËÍÇëÇó£¬ ²¢ÇÒ

--- Ó¦¸Ã¹Ø±ÕÁ¬½ÓÈç¹û¿Í»§¶ËûÓÐÍê³É·¢ËÍÇëÇóÏûÏ¢¡£

£¹ ·½·¨¶¨Ò壨Method Definitions£©
HTTP/1.1³£Ó÷½·¨µÄ¶¨ÒåÈçÏ¡£ËäÈ»·½·¨¿ÉÒÔ±»Õ¹¿ª£¬µ«Ð¼ӵķ½·¨²»ÄÜÈÏΪÄÜ·ÖÏíÓëÀ©Õ¹µÄ¿Í»§¶ËºÍ·þÎñÆ÷ͬÑùµÄÓïÒå¡£

HstÇëÇóÍ·Óò£¨¼û13.23½Ú£©±ØÐëÄÜÔÚËùÓеÄHTTP/1.1ÇëÇóÀï³öÏÖ¡£

9.1 °²È«ºÍµÈÃÝ£¨Idempotent£©·½·¨
9.1.1°²È«·½·¨£¨Safe Methods£©
ʵÏÖÕßÓ¦µ±ÖªµÀÈí¼þÊÇ´ú±íÓû§ÔÚ»¥ÁªÍøÉϽøÐн»»¥£¬²¢ÇÒÓ¦¸ÃСÐĵØÔÊÐíÓû§ÖªµÀÈκÎËüÃÇ¿ÉÄܲÉÈ¡µÄ¶¯×÷(action)£¬ÕâЩ¶¯×÷¿ÉÄܸøËûÃÇ×Ô¼º»òËûÈË´øÀ´ÎÞ·¨Ô¤ÁϵĽá¹û¡£

ÌØ±ðµÄ£¬GETºÍHEAD·½·¨½ö½öÓ¦¸Ã»ñÈ¡×ÊÔ´¶ø²»ÊÇÖ´Ðж¯×÷£¨action£©¡£ÕâЩ·½·¨Ó¦¸Ã±»¿¼ÂÇÊÇ“°²È«”µÄ¡£¿ÉÒÔÈÃÓû§´úÀíÓÃÆäËûµÄ·½·¨£¬È磺POST£¬PUT£¬DELETE£¬ÕâÑùÓû§´úÀí¾ÍÄÜÖªµÀÕâЩ·½·¨¿ÉÄÜ»áÖ´Ðв»°²È«µÄ¶¯×÷¡£

×ÔÈ»µÄ£¬±£Ö¤µ±·þÎñÆ÷ÓÉÓÚÖ´ÐÐGETÇëÇó¶ø²»ÄܲúÉú¸±×÷ÓÃÊDz»¿ÉÄܵģ»Êµ¼ÊÉÏ£¬Ò»Ð©¶¯Ì¬µÄ×ÊÔ´»á¿¼ÂÇÕâ¸öÌØÐÔ¡£Óû§²¢Ã»ÓÐÇëÇóÕâЩ¸±×÷Óã¬Òò´Ë²»ÐèÒª¶ÔÕâЩ¸±×÷ÓøºÔð¡£

9.1.2µÈÃÝ·½·¨£¨Idempotent Mehtods£©
·½·¨¿ÉÒÔÓеÈÃݵÄÐÔÖÊÒòΪ£¨³ýÁ˳ö´í»òÖÕÖ¹ÎÊÌ⣩N>0¸öÏàͬÇëÇóµÄ¸±×÷ÓÃͬµ¥¸öÇëÇóµÄ¸±×÷ÓõÄЧ¹ûÊÇÒ»Ñù£¨Òë×¢£ºµÈÃݾÍÊÇÖµ²»±äÐÔ£¬ÏàͬµÄÇëÇóµÃµ½ÏàͬµÄÏìÓ¦½á¹û£¬²»»á³öÏÖÏàͬµÄÇëÇó³öÏÖ²»Í¬µÄÏìÓ¦½á¹û£©¡£·½·¨GET£¬HEAD£¬PUT£¬DELETE¶¼ÓÐÕâÖÖÐÔÖÊ¡£Í¬Ñù£¬·½·¨OPTIONSºÍTRACE²»Ó¦¸ÃÓи±×÷Óã¬Òò´Ë¾ßÓÐÄÚÔڵĵÈÃÝÐÔ¡£È»¶ø£¬ÓпÉÄܼ¸¸öÇëÇóµÄÐòÁÐÊDz»µÈÃݵ쬼´Ê¹ÔÚÄÇÑùµÄÐòÁÐÖÐËùÓз½·¨¶¼ÊǵÈÃݵġ££¨Èç¹ûÕû¸öÐòÁÐÕûÌåµÄÖ´ÐеĽá¹û×ÜÊÇÏàͬµÄ£¬²¢ÇҴ˽á¹û²»»áÒòΪÐòÁеÄÕûÌ壬²¿·ÖµÄÔÙ´ÎÖ´Ðжø¸Ä±ä£¬ÄÇô´ËÐòÁÐÊǵÈÃݵġ££©ÀýÈ磬һ¸öÐòÁÐÊǷǵÈÃݵÄÈç¹ûËüµÄ½á¹ûÒÀÀµÓÚÒ»¸öÖµ£¬´ËÖµÔÚÒÔºóÏàͬµÄÐòÁÐÀï»á¸Ä±ä¡£ 

¸ù¾Ý¶¨Ò壬һ¸öÐòÁÐÈç¹ûûÓи±×÷Óã¬ÄÇô´ËÐòÁÐÊǵÈÃݵ썼ÙÉèÔÚ×ÊÔ´¼¯ÉÏûÓв¢ÐеIJÙ×÷£©¡£

9.2 OPTIONS£¨Ñ¡Ï
OPTIONS·½·¨±íÃ÷ÇëÇóÏëµÃµ½ÇëÇó/ÏìÓ¦Á´ÉϹØÓÚ´ËÇëÇóÀïµÄURI£¨Request-URI£©Ö¸¶¨×ÊÔ´µÄͨÐÅÑ¡ÏîÐÅÏ¢¡£´Ë·½·¨ÔÊÐí¿Í»§¶ËÈ¥Åж¨ÇëÇó×ÊÔ´µÄÑ¡ÏîºÍ/»òÐèÇ󣬻òÕß·þÎñÆ÷µÄÄÜÁ¦£¬¶ø²»ÐèÒªÀûÓÃÒ»¸ö×ÊÔ´¶¯×÷£¨Òë×¢£ºÊ¹ÓÃPOST£¬PUT£¬DELETE·½·¨£©»òÒ»¸ö×ÊÔ´»ñÈ¡£¨Òë×¢£ºÓÃGET·½·¨£©·½·¨¡£

ÕâÖÖ·½·¨µÄÏìÓ¦ÊDz»ÄÜ»º´æµÄ.¡£

Èç¹ûOPTIONSÇëÇóÏûÏ¢Àï°üÀ¨Ò»¸öʵÌåÖ÷Ì壨µ±ÇëÇóÏûÏ¢Àï³öÏÖContent-Length»òÕßTransfer-EncodingÍ·Óòʱ£©£¬ÄÇôýÌåÀàÐͱØÐëͨ¹ýContent-TypeÍ·ÓòÖ¸Ã÷¡£ËäÈ»´Ë¹æ·¶Ã»Óж¨ÒåÈçºÎʹÓôËʵÌåÖ÷Ì壬½«À´µÄHTTPÀ©Õ¹¿ÉÄÜ»áÀûÓÃOPTIONSÇëÇóµÄÏûÏ¢Ö÷ÌåÈ¥µÃµ½·þÎñÆ÷µÃ¸ü¶àÐÅÏ¢¡£Ò»¸ö·þÎñÆ÷Èç¹û²»Ö§³ÖOPTIONÇëÇóµÄÏûÏ¢Ö÷Ì壬Ëü»áÒÅÆú´ËÇëÇóÏûÏ¢Ö÷Ìå¡£

Èç¹ûÇëÇóURIÊÇÒ»¸öÐǺţ¨"*"£©,£¬OPTIONSÇëÇ󽫻áÓ¦ÓÃÓÚ·þÎñÆ÷µÄËùÓÐ×ÊÔ´¶ø²»ÊÇÌØ¶¨×ÊÔ´¡£ÒòΪ·þÎñÆ÷µÄͨÐÅÑ¡Ïîͨ³£ÒÀÀµÓÚ×ÊÔ´£¬ËùÒÔ”*”ÇëÇóÖ»ÄÜÔÚ“ping”»òÕß“no-op”·½·¨Ê±²ÅÓÐÓã»Ëü¸É²»ÁËÈκÎÊÂÇé³ýÁËÔÊÐí¿Í»§¶Ë²âÊÔ·þÎñÆ÷µÄÄÜÁ¦¡£ÀýÈ磺ËüÄܱ»ÓÃÀ´²âÊÔ´úÀíÊÇ·ñ×ñÑ­HTTP/1.1¡£

Èç¹ûÇëÇóURI²»ÊÇÒ»¸öÐǺţ¨"*"£©,£¬OPTIONSÇëÇóÖ»ÄÜÓ¦ÓÃÓÚÇëÇóURIÖ¸¶¨×ÊÔ´µÄÑ¡Ïî¡£

200ÏìÓ¦Ó¦¸Ã°üº¬ÈκÎÖ¸Ã÷Ñ¡ÏîÐÔÖʵÄÍ·Óò£¬ÕâЩѡÏîÐÔÖÊÓÉ·þÎñÆ÷ʵÏÖ²¢ÇÒÖ»ÊʺÏÄǸöÇëÇóµÄ×ÊÔ´£¨ÀýÈ磬AllowÍ·Óò£©£¬µ«Ò²¿ÉÄܰüһЩÀ©Õ¹µÄÔڴ˹淶ÀïûÓж¨ÒåµÄÍ·Óò¡£Èç¹ûÓÐÏìÓ¦Ö÷ÌåµÄ»°Ò²Ó¦¸Ã°üº¬Ò»Ð©Í¨ÐÅÑ¡ÏîµÄÐÅÏ¢¡£Õâ¸öÏìÓ¦Ö÷ÌåµÄ¸ñʽ²¢Ã»ÓÐÔڴ˹淶ÀﶨÒ壬µ«ÊÇ¿ÉÄÜ»áÔÚÒÔºóµÄHTTPÀﶨÒå¡£ÄÚÈÝЭÉÌ¿ÉÄܱ»ÓÃÓÚÑ¡ÔñºÏÊʵÄÏìÓ¦¸ñʽ¡£Èç¹ûûÓÐÏìÓ¦Ö÷Ìå°üº¬£¬ÏìÓ¦¾ÍÓ¦¸Ã°üº¬Ò»¸öֵΪ“0”µÄContent-LengthÍ·Óò¡£

Max-ForwardsÇëÇóÍ·Óò¿ÉÄܻᱻÓÃÓÚÕë¶ÔÇëÇóÁ´ÖÐÌØ¶¨µÄ´úÀí¡£µ±´úÀí½ÓÊÕµ½Ò»¸öOPTIONSÇëÇó£¬ÇÒ´ËÇëÇóµÄURIΪabsoluteURI£¬²¢ÇÒ´ËÇëÇóÊÇ¿ÉÒÔ±»×ª·¢µÄ£¬ÄÇô´úÀí±ØÐëÒª¼ì²âMax-ForwardsÍ·Óò¡£Èç¹ûMax-ForwardsÍ·ÓòµÄֵΪ“0”£¬ÄÇô´Ë´úÀí²»ÄÜת·¢´ËÏûÏ¢£»¶øÊÇ£¬´úÀíÓ¦¸ÃÒÔËü×Ô¼ºµÄͨÐÅÑ¡ÏîÏìÓ¦¡£Èç¹ûMax-ForwardsÍ·ÓòÊDZÈ0´óµÄÕûÊýÖµ£¬ÄÇô´úÀí±ØÐëµÝ¼õ´ËÖµµ±Ëüת·¢´ËÇëÇóʱ¡£Èç¹ûûÓÐMax-ForwardsÍ·Óò³öÏÖÔÚÇëÇóÀÄÇô´úÀíת·¢´ËÇëÇóʱ²»Äܰüº¬Max-ForwardsÍ·Óò¡£

9.3 GET
GET·½·¨Òâ˼ÊÇ»ñÈ¡±»ÇëÇóURI£¨Request-URI£©Ö¸¶¨µÄÐÅÏ¢£¨ÒÔʵÌåµÄ¸ñʽ£©¡£Èç¹ûÇëÇóURIÉæ¼°µ½Ò»¸öÊý¾ÝÉú³É¹ý³Ì£¬ÄÇôÕâ¸öÉú³ÉµÄÊý¾ÝÓ¦¸Ã±»×÷ΪʵÌåÔÚÏìÓ¦Öзµ»Ø£¬µ«Õâ²¢²»Êǹý³ÌµÄ×ÊÔ´Îı¾£¬³ý·Ç×ÊÔ´Îı¾Ç¡ºÃÊǹý³ÌµÄÊä³ö£¨Òë×¢£ºURIָʾµÄ×ÊÔ´ÊǶ¯Ì¬Éú³ÉµÄ£©¡£

Èç¹ûÇëÇóÏûÏ¢°üº¬ If-Modified-Since,£¬If-Unmodified-Since£¬If-Match,£¬If-None-Match,»òÕß If-RangeÍ·Óò,£¬GETµÄÓïÒ彫±ä³É“Ìõ¼þ£¨conditionall£© GET”¡£Ò»¸öÌõ¼þGET·½·¨»áÇëÇóÂú×ãÌõ¼þÍ·ÓòµÄʵÌå¡£Ìõ¼þGET·½·¨µÄÄ¿µÄÊÇΪÁ˼õÉÙ²»±ØÒªµÄÍøÂçʹÓã¬Õâͨ¹ýÀûÓûº´æµÄʵÌåµÄ¸üУ¬´Ó¶ø²»Óöà´ÎÇëÇó»ò´«Êä¿Í»§ÒѾ­ÓµÓеÄÊý¾Ý¡£.

Èç¹ûÇëÇó·½·¨°üº¬Ò»¸öRangeÍ·Óò£¬ÄÇôGET·½·¨¾Í±ä³É“²¿·ÖGet”·½·¨¡£Ò»¸ö²¿·ÖGET»áÇëÇóʵÌåµÄÒ»²¿·Ö£¬ÕâÔÚ14.35½ÚÀïÃèÊöÁË¡£ ²¿·ÖGET·½·¨µÄÄ¿µÄÊÇΪÁ˼õÉÙ²»±ØÒªµÄÍøÂçʹÓã¬Õâͨ¹ýÔÊÐí»ñÈ¡²¿·ÖʵÌ壬´Ó¶ø²»ÐèÒª´«Êä¿Í»§¶ËÒѾ­ÓµÓеÄÊý¾Ý¡£

GETÇëÇóµÄÏìÓ¦Êǿɻº´æµÄ£¨cacheable£©Èç¹û´ËÏìÓ¦Âú×ãµÚ13½ÚHTTP»º´æµÄÒªÇó¡£

¿´15.1.3½Ú¹ØÓÚGETÇëÇóÓÃÓÚ±íµ¥Ê±°²È«¿¼ÂÇ¡£

9.4 HEAD
HEAD·½·¨ºÍGET·½·¨Ò»Ö£¬³ýÁË·þÎñÆ÷²»ÄÜÔÚÏìÓ¦Àï·µ»ØÏûÏ¢Ö÷Ìå¡£HEADÇëÇóÏìÓ¦ÀïHTTPÍ·ÓòÀïµÄÔªÐÅÏ¢Ó¦¸ÃºÍGETÇëÇóÏìÓ¦ÀïµÄÔªÐÅÏ¢Ò»Ö¡£´Ë·½·¨±»ÓÃÀ´»ñÈ¡ÇëÇóʵÌåµÄÔªÐÅÏ¢¶ø²»ÐèÒª´«ÊäʵÌåÖ÷Ì壨entity-body£©¡£´Ë·½·¨¾­³£±»ÓÃÀ´²âÊÔ³¬Îı¾Á´½ÓµÄÓÐЧÐÔ£¬¿É·ÃÎÊÐÔ£¬ºÍ×î½üµÄ¸Ä±ä¡£.

HEADÇëÇóµÄÏìÓ¦Êǿɻº´æµÄ£¬ÒòΪÏìÓ¦ÀïµÄÐÅÏ¢¿ÉÄܱ»ÓÃÓÚ¸üÐÂÒÔǰµÄÄǸö×ÊÔ´µÄ»º´æÊµÌå.¡£Èç¹û³öÏÖÒ»¸öеÄÓòÖµÖ¸Ã÷ÁË»º´æÊµÌåºÍµ±Ç°Ô´·þÎñÆ÷ÉÏʵÌåµÄ²»Í¬£¨¿ÉÄÜÒòΪContent-Length£¬Content-MD5£¬ETag»òLast-ModifiedÖµµÄ¸Ä±ä£©£¬ÄÇô»º´æ£¨cache£©±ØÐëÈÏΪ´Ë»º´æÏîÊǹýʱµÄ£¨stale£©¡£

9.5 POST
POST ·½·¨±»ÓÃÓÚÇëÇóÔ´·þÎñÆ÷½ÓÊÜÇëÇóÖеÄʵÌå×÷ΪÇëÇó×ÊÔ´µÄÒ»¸öеĴÓÊôÎï¡£POST±»Éè¼Æº­¸ÇÏÂÃæµÄ¹¦ÄÜ¡£

-ÒÑ´æÔÚµÄ×ÊÔ´µÄ×¢ÊÍ£»

-·¢²¼ÏûÏ¢¸øÒ»¸ö²¼¸æ°å£¬ÐÂÎÅ×飬ÓʼþÁÐ±í£¬»òÕßÏàËÆµÄÎÄÕÂ×é¡£

-Ìṩһ¸öÊý¾Ý¿é£¬ÈçÌá½»Ò»¸ö±íµ¥¸øÒ»¸öÊý¾Ý´¦Àí¹ý³Ì¡£

-ͨ¹ý×·¼Ó²Ù×÷À´À©Õ¹Êý¾Ý¿â¡£

POST·½·¨µÄʵ¼Ê¹¦ÄÜÊÇÓÉ·þÎñÆ÷¾ö¶¨µÄ£¬²¢ÇÒ¾­³£ÒÀÀµÓÚÇëÇóURI£¨Request-URI£©¡£POSTÌá½»µÄʵÌåÊÇÇëÇóURIµÄ´ÓÊôÎ¾ÍºÃÏñÒ»¸öÎļþ´ÓÊôÓÚÒ»¸öĿ¼£¬Ò»ÆªÐÂÎÅÎÄÕ´ÓÊôÓÚÒ»¸öÐÂÎÅ×飬»òÕßÒ»Ìõ¼Ç¼´ÓÊôÓÚÒ»¸öÊý¾Ý¿â¡£

POST·½·¨Ö´Ðе͝×÷¿ÉÄܲ»»á¶ÔÇëÇóURIËùÖ¸µÄ×ÊÔ´Æð×÷Óá£ÔÚÕâÖÖÇé¿öÏ£¬200£¨³É¹¦£©»òÕß204£¨Ã»ÓÐÄÚÈÝ£©½«ÊÇÊʺϵÄÏìӦ״̬£¬ÕâÒÀÀµÓÚÏìÓ¦ÊÇ·ñ°üº¬Ò»¸öÃèÊö½á¹ûµÄʵÌå¡£

Èç¹û×ÊÔ´±»Ô´·þÎñÆ÷´´½¨£¬ÏìÓ¦Ó¦¸ÃÊÇ201£¨Created£©²¢ÇÒ°üº¬Ò»¸öʵÌ壬´ËʵÌåÃèÊöÁËÇëÇóµÄ״̬²¢ÇÒ´ËʵÌåÒýÓÃÁËÒ»¸öÐÂ×ÊÔ´ºÍÒ»¸öLocationÍ·Óò£¨¼û14.30½Ú£©¡£

POST·½·¨µÄÏìÓ¦Êǿɻº´æµÄ¡£³ý·ÇÏìÓ¦ÀïÓÐCache-Control»òÕßExpiresÍ·ÓòָʾÆäÏìÓ¦²»¿É»º´æ¡£È»¶ø£¬303£¨¼ûÆäËû£©ÏìÓ¦Äܱ»ÀûÓÃÈ¥Ö¸µ¼Óû§´úÀí£¨agent£©È¥»ñµÃ¿É»º´æµÄÏìÓ¦¡£

 POST ÇëÇó±ØÐë×ñÑ­8.2½ÚÀïÖ¸Ã÷µÄÏûÏ¢´«ÊäÐèÇó¡£

²Î¼û15.1.3½Ú¹ØÓÚ°²È«ÐԵĿ¼ÂÇ.

9.6 PUT
PUT·½·¨ÇëÇó·þÎñÆ÷È¥°ÑÇëÇóÀïµÄʵÌå´æ´¢ÔÚÇëÇóURI£¨Request-URI£©±êʶÏ¡£Èç¹ûÇëÇóURI£¨Request-URI£©Ö¸¶¨µÄµÄ×ÊÔ´ÒѾ­ÔÚÔ´·þÎñÆ÷ÉÏ´æÔÚ£¬ÄÇô´ËÇëÇóÀïµÄʵÌåÓ¦¸Ã±»µ±×÷ÊÇÔ´·þÎñÆ÷´ËURIËùÖ¸¶¨×ÊԴʵÌåµÄÐ޸İ汾¡£Èç¹ûÇëÇóURI£¨Request-URI£©Ö¸¶¨µÄ×ÊÔ´²»´æÔÚ£¬²¢ÇÒ´ËURI±»Óû§´úÀí£¨user agent£¬Òë×¢£ºÓû§´úÀí¿ÉÈÏΪÊǿͻ§ä¯ÀÀÆ÷£©¶¨ÒåΪһ¸öÐÂ×ÊÔ´£¬ÄÇôԴ·þÎñÆ÷¾ÍÓ¦¸Ã¸ù¾ÝÇëÇóÀïµÄʵÌå´´½¨Ò»¸ö´ËURIËù±êʶϵÄ×ÊÔ´¡£Èç¹ûÒ»¸öеÄ×ÊÔ´±»´´½¨ÁË£¬Ô´·þÎñÆ÷±ØÐëÄÜÏòÓû§´úÀí£¨user agent£© ·¢ËÍ201£¨ÒÑ´´½¨£©ÏìÓ¦¡£Èç¹ûÒÑ´æÔÚµÄ×ÊÔ´±»¸Ä±äÁË£¬ÄÇôԴ·þÎñÆ÷Ó¦¸Ã·¢ËÍ200£¨Ok£©»òÕß204£¨ÎÞÄÚÈÝ£©ÏìÓ¦¡£Èç¹û×ÊÔ´²»Äܸù¾ÝÇëÇóURI´´½¨»òÕ߸ı䣬һ¸öºÏÊʵĴíÎóÏìÓ¦Ó¦¸Ã¸ø³öÒÔ·´Ó¦ÎÊÌâµÄÐÔÖÊ¡£ÊµÌåµÄ½ÓÊÕÕß²»ÄܺöÂÔÈκÎËü²»Àí½âµÄContent-*£¨È磺Content-Range£©Í·Óò£¬²¢ÇÒ±ØÐë·µ»Ø501£¨Ã»Óб»ÊµÏÖ£©ÏìÓ¦¡£

Èç¹ûÇëÇó´©¹ýÒ»¸ö»º´æ£¨cache£©£¬²¢ÇÒ´ËÇëÇóURI£¨Request-URI£©Ö¸Ê¾ÁËÒ»¸ö»ò¶à¸öµ±Ç°»º´æµÄʵÌ壬ÄÇôÕâЩʵÌåÓ¦¸Ã±»¿´×÷ÊǾɵġ£PUT·½·¨µÄÏìÓ¦²»Ó¦¸Ã±»»º´æ¡£

POST·½·¨ºÍPUT·½·¨ÇëÇó×î¸ù±¾µÄÇø±ðÊÇÇëÇóURI£¨Request-URI£©µÄº¬Ò岻ͬ¡£POSTÇëÇóÀïµÄURIָʾһ¸öÄÜ´¦ÀíÇëÇóʵÌåµÄ×ÊÔ´£¨Òë×¢£º´Ë×ÊÔ´¿ÉÄÜÊÇÒ»¶Î³ÌÐò£¬ÈçjspÀïµÄservlet£© ¡£´Ë×ÊÔ´¿ÉÄÜÊÇÒ»¸öÊý¾Ý½ÓÊÕ¹ý³Ì£¬Ò»¸öÍø¹Ø£¨gateway£¬Òë×¢£ºÍø¹ØºÍ´úÀí·þÎñÆ÷µÄÇø±ðÊÇ£ºÍø¹Ø¿ÉÒÔ½øÐÐЭÒéת»»£¬¶ø´úÀí·þÎñÆ÷²»ÄÜ£¬Ö»ÊÇÆð´úÀíµÄ×÷Ó㬱ÈÈ绺´æ·þÎñÆ÷Æäʵ¾ÍÊÇÒ»¸ö´úÀí·þÎñÆ÷£©£¬»òÕßÒ»¸öµ¥¶À½ÓÊÕ×¢Ê͵ÄʵÌå¡£¶øPUT·½·¨ÇëÇóÀïÓÐÒ»¸öʵÌåÒ»Ò»Óû§´úÀíÖªµÀURIÒâָʲô£¬²¢ÇÒ·þÎñÆ÷²»ÄܰѴËÇëÇóÓ¦ÓÃÓÚÆäËûURIÖ¸¶¨µÄ×ÊÔ´¡£Èç¹û·þÎñÆ÷ÆÚÍûÇëÇó±»Ó¦ÓÃÓÚÒ»¸ö²»Í¬µÄURI£¬ÄÇôËü±ØÐë·¢ËÍ301£¨ÓÀ¾ÃÒÆ¶¯ÁË£©ÏìÓ¦£»Óû§´úÀí¿ÉÒÔ×Ô¼º¾ö¶¨ÊÇ·ñÖØ¶¨ÏòÇëÇó¡£

Ò»¸ö¶ÀÁ¢µÄ×ÊÔ´¿ÉÄܻᱻÐí¶à²»Í¬µÄURIÖ¸¶¨¡£È磺һƪÎÄÕ¿ÉÄÜ»áÓÐÒ»¸öURIÖ¸¶¨µ±Ç°°æ±¾£¬´ËURIÇø±ðÓÚÆäÎÄÕÂÆäËûÌØÊâ°æ±¾µÄURI¡£ÕâÖÖÇé¿öÏ£¬Ò»¸öͨÓÃURIµÄPUTÇëÇó¿ÉÄܻᵼÖÂÆä×ÊÔ´µÄÆäËûURI±»Ô´·þÎñÆ÷¶¨Òå¡£

HTTP/1.1ûÓж¨ÒåPUT·½·¨¶ÔÔ´·þÎñÆ÷µÄ״̬ӰÏì¡£

PUTÇëÇó±ØÐë×ñÑ­8.2½ÚÖеÄÏûÏ¢´«ÊäÒªÇó¡£

³ý·ÇÌØ±ðÖ¸³ö£¬PUT·½·¨ÇëÇóÀïµÄʵÌåÍ·ÓòÓ¦¸Ã±»ÓÃÓÚ×ÊÔ´µÄ´´½¨»òÐ޸ġ£

9.7 DELETE£¨É¾³ý£©
DELETE·½·¨ÇëÇóÔ´·þÎñÆ÷ɾ³ýÇëÇóURIÖ¸¶¨µÄ×ÊÔ´¡£´Ë·½·¨¿ÉÄÜ»áÔÚÔ´·þÎñÆ÷Éϱ»ÈËΪµÄ¸ÉÉæ£¨»òÆäËû·½·¨£©¡£¿Í»§¶Ë²»Äܱ£Ö¤´Ë²Ù×÷Äܱ»Ö´ÐУ¬¼´Ê¹Ô´·þÎñÆ÷·µ»Ø³É¹¦×´Ì¬Â롣Ȼ¶ø£¬·þÎñÆ÷²»Ó¦¸ÃÖ¸Ã÷³É¹¦³ý·ÇËü´òËãɾ³ý×ÊÔ´»ò°Ñ´Ë×ÊÔ´ÒÆµ½Ò»¸ö²»¿É·ÃÎʵÄλÖá£

Èç¹ûÏìÓ¦Àï°üº¬ÃèÊö³É¹¦µÄʵÌ壬ÏìÓ¦Ó¦¸ÃÊÇ200£¨Ok£©£»Èç¹ûDELETE¶¯×÷ûÓÐͨ¹ý£¬Ó¦¸ÃÒÔ202£¨ÒѽÓÊÜ£©ÏìÓ¦£»Èç¹ûDELETE·½·¨ÇëÇóÒѾ­Í¨¹ýÁË£¬µ«ÏìÓ¦²»°üº¬ÊµÌ壬ÄÇôӦ¸ÃÒÔ204£¨ÎÞÄÚÈÝ£©ÏìÓ¦¡£

Èç¹ûÇëÇó´©¹ý»º´æ£¬²¢ÇÒÇëÇóURI£¨Request-URI£©Ö¸¶¨Ò»¸ö»ò¶à¸ö»º´æµ±Ç°ÊµÌ壬ÄÇôÕâЩ»º´æÏîÓ¦¸Ã±»ÈÏΪÊǾɵġ£DELETE·½·¨µÄÏìÓ¦ÊDz»Äܱ»»º´æµÄ¡£

9.8 TRACE
TRACE·½·¨±»ÓÃÓÚ¼¤·¢Ò»¸öÔ¶³ÌµÄ£¬Ó¦ÓòãµÄÇëÇóÏûÏ¢»ØÂ·£¨Òë×¢£ºTRACE·½·¨Èÿͻ§¶Ë²âÊÔµ½·þÎñÆ÷µÄÍøÂçͨ·£¬»ØÂ·µÄÒâ˼Èç·¢ËÍÒ»¸öÇë·µ»ØÒ»¸öÏìÓ¦£¬Õâ¾ÍÊÇÒ»¸öÇëÇóÏìÓ¦»ØÂ·£¬£©¡£×îºóµÄ½ÓÊÕÕß»òÕßÊǽÓÊÕÇëÇóÀïMax-ForwardsÍ·ÓòֵΪ0Ô´·þÎñÆ÷»òÕßÊÇ´úÀí·þÎñÆ÷»òÕßÊÇÍø¹Ø¡£TRACEÇëÇó²»Äܰüº¬Ò»¸öʵÌå¡£

TRACE·½·¨ÔÊÐí¿Í»§¶ËÖªµÀÇëÇóÁ´µÄÁíÒ»¶Ë½ÓÊÕʲô£¬²¢ÇÒÀûÓÃÄÇЩÊý¾ÝÈ¥²âÊÔ»òÕï¶Ï¡£ViaÍ·ÓòÖµ£¨¼û14.45£©ÓÐÌØÊâµÄÓÃ;£¬ÒòΪËü¿ÉÒÔ×÷ΪÇëÇóÁ´µÄ¸ú×ÙÐÅÏ¢¡£ÀûÓÃMax-ForwardsÍ·ÓòÔÊÐí¿Í»§¶ËÏÞÖÆÇëÇóÁ´µÄ³¤¶ÈÈ¥²âÊÔÒ»´®´úÀí·þÎñÆ÷ÊÇ·ñÔÚÎÞÏÞ»ØÂ·Àïת·¢ÏûÏ¢¡£

Èç¹ûÇëÇóÊÇÓÐЧµÄ£¬ÏìÓ¦Ó¦¸ÃÔÚÏìӦʵÌåÖ÷ÌåÀï°üº¬Õû¸öÇëÇóÏûÏ¢£¬²¢ÇÒÏìÓ¦Ó¦¸Ã°üº¬Ò»¸öContent-TypeÍ·ÓòֵΪ”message/HTTP”µÄÍ·Óò¡£TRACE·½·¨µÄÏìÓ¦²»Äܲ»»º´æ¡£

9.9 CONNECT£¨Á¬½Ó£©
HTTP1.1ЭÒ鹿·¶±£ÁôÁËCONNECT·½·¨£¬´Ë·½·¨ÊÇΪÁËÄÜÓÃÓÚÄܶ¯Ì¬Çл»µ½ËíµÀµÄ´úÀí·þÎñÆ÷£¨proxy£¬Òë×¢£º¿ÉÒÔΪ´úÀí£¬Ò²¿ÉÒÔÊÇ´úÀí·þÎñÆ÷£©¡£

10.״̬Â붨Òå
 Ã¿Ò»¸ö״̬ÂëÔÚÏÂÃæ¶¨Ò壬°üÀ¨´Ë״̬ÂëÒÀÀµÓÚ·½·¨µÄÃèÊöºÍÏìÓ¦ÀïÐèÒªµÄÈκÎÔªÐÅÏ¢µÄÃèÊö¡£

10.1 ֪ͨµÄ 1xx
ÕâÀà״̬´úÂëÖ¸Ã÷ÁËÒ»¸ö±¸ÓõÄÏìÓ¦£¬°üº¬Ò»¸öStatus-LineºÍ¿ÉÑ¡µÄÍ·Óò£¬²¢ÇÒÒ»Ò»¸ö¿ÕÐнáÊø£¨Òë×¢£º¿ÕÐоÍÊÇCRLF£©¡£Ã»ÓбØÐëµÄÍ·Óò¶ÔÕâÀà״̬Âë¡£ÒòΪHTTP/1.0ûÓж¨ÒåÈκÎ1xx״̬Â룬ËùÒÔ·þÎñÆ÷²»ÄÜ·¢ËÍÒ»¸ö1xxÏìÓ¦¸øÒ»¸öHTTP/1.1¿Í»§¶Ë£¬³ýÁËʵÑéÐÔµÄÄ¿µÄ¡£

¿Í»§¶Ë±ØÐëÄÜ×¼±¸È¥½ÓÊÜÒ»¸ö»ò¶à¸ö1xx״̬ÏìÓ¦ÓÅÏÈÓÚÒ»¸ö³£¹æÏìÓ¦£¬¼´Ê¹¿Í»§¶Ë²»ÆÚÍû100£¨¼ÌÐø£©×´Ì¬ÏìÓ¦¡£²»±»¿Í»§¶ËÆÚÍûµÄ1xx״̬ÏìÓ¦¿ÉÄܻᱻÓû§´úÀíºöÂÔ¡£

´úÀí·þÎñÆ÷±ØÐëÄÜת·¢1xxÏìÓ¦£¬³ý·Ç´úÀí·þÎñÆ÷ºÍËüµÄ¿Í»§¶ËµÄÁ¬½Ó¹Ø±ÕÁË£¬»òÕß³ý·Ç´úÀí·þÎñÆ÷×Ô¼ºÏìÓ¦ÇëÇó²¢²úÉú1xxÏìÓ¦¡££¨ÀýÈ磺Èç¹û´úÀí·þÎñÆ÷Ìí¼ÓÁË”Expect:100-continue”Í·Óòµ±×ª·¢ÇëÇóʱ£¬ÄÇôËü²»±Ø×ª·¢ÏàÓ¦µÄ100£¨¼ÌÐø£©ÏìÓ¦¡££©

10.1.1 100 ¼ÌÐø £¨Continue£©
100״̬ÏìÓ¦¸æË߿ͻ§¶ËÓ¦¸Ã¼ÌÐøÇëÇó¡£100ÏìÓ¦ÊǸöÖмäÏìÓ¦£¬Ëü±»ÓÃÓÚ֪ͨ¿Í»§¶ËÇëÇóµÄ³õʼ²¿·ÖÒѾ­±»½ÓÊÕÁ˲¢ÇÒ´ËÇëÇó»¹Ã»Óб»·þÎñÆ÷¶ªÆú¡£¿Í»§¶ËÓ¦¸Ã¼ÌÐø·¢ËÍÇëÇóµÄÊ£Óಿ·Ö£¬»òÕßÈç¹û´ËÇëÇóÒѾ­Íê³ÉÁË£¬¿Í»§¶Ë»áºöÂÔ´Ë100ÏìÓ¦¡£·þÎñÆ÷±ØÐë·¢ËÍÒ»¸öfinalÏìÓ¦ÔÚÇëÇó½ÓÊÕºó¡£¼û8.2.3½Ú¹ØÓÚ´Ë״̬ÂëµÄÌÖÂÛºÍʹÓá£

10.1.2 101Çл»Ð­Òé £¨Switching Protocols£©
·þÎñÆ÷Àí½âºÍÔ¸Òâ×ñÑ­¿Í»§¶ËÕâÑùµÄÇëÇ󣬴ËÇëÇóͨ¹ýUpgradeÏûϢͷÓò£¨¼û14.42½Ú£©Ö¸Ã÷ÔÚÁ¬½ÓÉÏÓ¦ÓòãЭÒéµÄ¸Ä±ä¡£ ·þÎñÆ÷½«»áÇл»µ½ÏìÓ¦ÀïUpgradeÍ·ÓòÀïÖ¸Ã÷µÄЭÒ飬Ȼºó½ô½ÓןúËæÒ»¸ö½áÊø´Ë101ÏìÓ¦µÄ¿ÕÐС£

Ö»Óе±Ð­ÒéÇл»Ê±ÄÜÊÜÒæ£¬Ð­Òé²ÅÓ¦¸ÃÇл»¡£ÀýÈ磬µ±´«Êä×ÊԴʱ£¬Çл»µ½Ò»¸öеÄHTTP°æ±¾±È¾ÉµÄ°æ±¾ÒªºÃ£¬»òÕßÇл»µ½Ò»¸öʵʱµÄ£¬Í¬²½µÄЭÒé´øÀ´ºÃ´¦Ê±£¬ÎÒÃǶ¼Ó¦¸Ã¿¼ÂÇÇл»¡£

10.2 ³É¹¦ 2xx
 ÕâÀà״̬ÂëÖ¸Ã÷¿Í»§¶ËµÄÇëÇòÒѾ­±»·þÎñÆ÷³É¹¦µÄ½ÓÊÕÁË£¬Àí½âÁË£¬²¢ÇÒ½ÓÊÜÁË¡£

10.2.1 200 OK
´Ë״̬ÂëÖ¸Ã÷¿Í»§¶ËÇëÇóÒѾ­³É¹¦ÁË¡£ÏìÓ¦·µ»ØµÄÐÅÏ¢ÒÀÀµÓÚÇëÇóÀïµÄ·½·¨£¬ÀýÈ磺

GET      ÇëÇó×ÊÔ´µÄÏàÓ¦µÄʵÌåÒѾ­°üº¬ÔÚÏìÓ¦Àï²¢·µ»Ø¸ø¿Í»§¶Ë¡£

HEAD     ÏàÓ¦ÓÚÇëÇó×ÊԴʵÌåµÄʵÌåÍ·ÓòÒѾ­±»°üº¬ÔÚÎÞÏûÏ¢Ö÷ÌåµÄÏìÓ¦Àï¡£

POST     ÏìÓ¦ÀïÒѾ­°üº¬Ò»¸öʵÌ壬´ËʵÌåÃèÊö»òÕß°üº¬´ËPOST¶¯×÷Ö´ÐеĽá¹û

TRACE    ÏìÓ¦Àï°üº¬Ò»¸öʵÌ壬´ËʵÌå°üº¬Öն˶ԷþÎñÆ÷½ÓµÄÇëÇóÏûÏ¢¡£

10.2.2 201 ÒÑ´´½¨£¨Created£©
ÇëÇóÒѾ­±»·þÎñÆ÷Âú×ãÁ˲¢ÇÒÒѾ­²úÉúÁËÒ»¸öеÄ×ÊÔ´¡£Ð´´½¨µÄ×ÊÔ´µÄURIÔÚÏìÓ¦µÄʵÌåÀï·µ»Ø£¬µ«ÊÇ´Ë×ÊÔ´×îÈ·¶¨µÄURIÊÇÔÚLocationÍ·ÓòÀï¸ø³öµÄ¡£ÏìÓ¦Ó¦¸Ãº¬ÓÐһʵÌ壬´ËʵÌå°üº¬´Ë×ÊÔ´µÄÌØÐÔºÍλÖã¬Óû§»òÓû§´úÀíÄÜ´ÓÕâÐ©ÌØÐÔºÍλÖÃÀïÑ¡Ôñ×îºÏÊʵġ£ÊµÌå¸ñʽ±»Content-TypeÍ·ÓòÀïýÌåÀàÐÍÖ¸¶¨¡£Ô´·þÎñÆ÷±ØÐëÄÜÔÚ·µ»Ø201״̬Âë֮ǰ½¨Á¢×ÊÔ´¡£Èç¹û¶¯×÷£¨Òë×¢£ºÕâÀïÖ¸ÄÜ´´½¨×ÊÔ´µÄ·½·¨£¬ÈçPOST·½·¨£©²»Äܱ»Á¢¼´Ö´ÐУ¬ÄÇô·þÎñÆ÷Ó¦¸ÃÒÔ202£¨½ÓÊÜ£©ÏìÓ¦´úÌæ¡£

Ò»¸ö201ÏìÓ¦¿ÉÒÔ°üº¬Ò»¸öETagÏìӦͷÓò£¬´ËÍ·ÓòΪÇëÇóµÄ±äÁ¿£¨Òë×¢£º±äÁ¿µÄº¬Òå¼ûµÚ1.3½Ú“±äÁ¿”µÄ½âÊÍ£©Ö¸Ã÷µ±Ç°µÄʵÌå±êÇ©£¨entity tag£©Öµ£¬µ±×ÊÔ´±»´´½¨Ê±£¬¼û14.19½Ú¡£

10.2.3 202 ½ÓÊÜ£¨Accepted£©
ÇëÇóÒѾ­±»½ÓÊÜÁË£¬µ«ÊÇ»¹Ã»ÓжԴËÇëÇó´¦ÀíÍê¡£ÇëÇó¿ÉÄÜ´¦ÀíÍêÒ²¿ÉÄÜûÓÐ×îÖÕ±»´¦ÀíÍ꣬ÒòΪµ±´¦Àí·¢ÉúµÄʱºò·þÎñÆ÷¿ÉÄܻᷢÏÖ´ËÇëÇó²»Äܱ»´¦Àí¡£

202ÏìÓ¦ÊÇ·ÇίÍеġ£ÕâÊÇΪÁËÔÊÐí·þÎñÆ÷ΪÆäËû´¦Àí£¨È磺ÿÌìÖ´ÐÐÒ»´ÎµÄ¹ý³Ì£©¶ø½ÓÊÜÒ»¸öÇëÇó´Ó¶ø²»ÐèÒªÓû§´úÀíºÍ·þÎñÆ÷Ö®¼äÔÚ´¦ÀíÍê³É֮ǰ±ØÐë½øÐг־ÃÁ¬½Ó¡£ÏìÓ¦ÀïµÄʵÌåÓ¦¸Ã°üº¬ÇëÇóµ±Ç°×´Ì¬µÄÉùÃ÷²¢ÇÒÓ¦¸Ã°üº¬Ò»¸ö״̬¼àÊÓÖ¸Õë»òһЩÓû§ÆÚÍûºÎʱÇëÇó±»Âú×ãµÄÆÀ¹À¡£

10.2.4 203 ·ÇȨÍþÐÅÏ¢£¨Non-Authoritative information£©
´Ë״̬ÂëÏìÓ¦Ö¸Ã÷ÏìÓ¦ÀïµÄʵÌåÍ·ÓòÀïµÄÔªÐÅÏ¢¶ÔÔ´·þÎñÆ÷À´ËµÊÇûÓÐÒâÒåµÄ£¬ÕâЩԪÐÅÏ¢ÊÇ´Ó¾Ö²¿µÄ»òµÚÈý·½µÄÏìÓ¦¸±±¾ÀïµÃµ½µÄ¡£ÕâЩԪÐÅÏ¢¿ÉÄÜÊÇÔ´·þÎñÆ÷°æ±¾µÄ×Ó¼¯»ò³¬¼¯¡£È磬°üº¬Ò»¸ö´æÔÚ±¾µØµÄ×ÊÔ´×¢ÊÍÐÅÏ¢¾Í¿ÉÒÔ²úÉúÒ»¸öÔ´·þÎñÆ÷ÄÜÀí½âµÄÔªÐÅÏ¢µÄ³¬¼¯¡£203ÏìӦ״̬ÂëµÄʹÓò¢²»ÊDZØÐëµÄ²¢ÇÒÖ»ÓÐÔÚÏìÓ¦ÊÇ·Ç200£¨Ok£©ÏìӦʱ²ÅÊǺÏÊʵġ£

10.2.5 204 ÎÞÄÚÈÝ £¨No Content£©
·þÎñÆ÷ÒѾ­Âú×ãÁËÇëÇ󵫲»ÐèÒª·µ»ØÒ»¸öʵÌ壬²¢ÇÒ¿ÉÄÜÖ»Ïë·µ»Ø¸üÐÂÁ˵ÄÔªÐÅÏ¢¡£204״̬ÏìÓ¦¿ÉÄܰüº¬Ò»¸öеĻò¸üÐÂÁ˵ģ¬ºÍÇëÇó±äÁ¿£¨Òë×¢£º±äÁ¿ÊÇ×ÊÔ´µÄÒ»ÖÖ±íÏÖÐÎʽ£¬ÕâºÍrest¼Ü¹¹ÀïµÄ¶¨ÒåÊÇÒ»ÑùµÄ£¬ËùÒÔÕâÀïÎÒÃÇ¿ÉÒÔÀí½âÇëÇó±äÁ¿ÊÇÇëÇó×ÊÔ´µÄÒ»ÖÖ±íÏÖÐÎʽ£©ÏàÁªÏµµÄÔªÐÅÏ¢£¨ÔªÐÅÏ¢ÒÔʵÌåÍ·ÓòµÄÐÎʽ±íʽ£©¡£

ÀûÓôË204ÏìÓ¦£¬¿Í»§¶ËÈç¹ûÊÇÒ»¸öÓû§´úÀí£¬Ëü¾Í¿ÉÒÔ²»ÓøıäÒýÆðÇëÇó·¢Ë͵ÄÎĵµÊÓͼ£¨Òë×¢£ºÈçһƪhtmlÎĵµÔÚä¯ÀÀÆ÷Àï³ÊÏÖµÄÑù×Ó£©¡£204״̬ÏìÓ¦Ö÷ÒªµÄÄ¿µÄÊÇÔÊÐíÊäÈ룬¶ø²»±ØÒýÆðÓû§´úÀíµ±Ç°ÎĵµÊÓͼµÄ¸Ä±ä£¬ËäȻһЩеĻò¸üÐÂÁ˵ÄÔªÐÅÏ¢¿ÉÄÜ»áÓ¦ÓÃÓÚÓû§´úÀíÊÓͼÀïµÄ´ËÎĵµ¡£

204ÏìÓ¦²»Äܰüº¬Ò»¸öÏûÏ¢Ö÷Ì壬²¢ÇÒÔÚÍ·Óòºó°üº¬Ò»¸ö¿ÕÐнáÊø¡£

10.2.6 205 ÖØÖÃÄÚÈÝ£¨Reset Content£©
205״̬ÏìÓ¦ÊÇ·þÎñÆ÷¸æËßÓû§´úÀíÓ¦¸ÃÖØÖÃÒýÆðÇëÇó±»·¢Ë͵ÄÎĵµÊÓͼ¡£´ËÏìÓ¦Ö÷ÒªµÄÄ¿µÄÊÇÇå¿ÕÎĵµÊÓͼ±íµ¥ÀïµÄÊäÈë¿òÒÔ±ãÓû§ÄÜÊäÈëÆäËüÐÅÏ¢¡£´ËÏìÓ¦²»Äܰüº¬Ò»¸öʵÌå¡£

10.2.7 206 ²¿·ÖÄÚÈÝ£¨Partial Content£©
·þÎñÆ÷ÒѾ­Íê³ÉÁ˿ͻ§¶Ë¶Ô×ÊÔ´µÄ²¿·ÖGETÇëÇó¡£ÇëÇó±ØÐë°üº¬Ò»¸öRangeÍ·Óò£¨14.35½Ú£©ÓÃÀ´Ö¸³öÏëÒªµÄ·¶Î§£¬²¢ÇÒÒ²ÓпÉÄܰüº¬Ò»¸öIf-RangeÍ·Óò£¨¼û14.27½Ú£©À´Ê¹ÇëÇó³ÉΪһ¸öÌõ¼þÇëÇó¡£

206״̬µÄÏìÓ¦±ØÐë°üº¬ÒÔϵÄÍ·Óò£º

- »òÕßContent-RangeÍ·Óò£¬´ËÍ·ÓòÖ¸Ã÷ÁËÏìÓ¦ÀïµÄ·¶Î§£»»òÕßÒ»¸öֵΪ”multipart/byteranges”µÄContent-TypeÍ·ÓòºÍΪÿ²¿·ÖÖ¸Ã÷·¶Î§µÄContent-RangeÍ·Óò¡£Èç¹ûÒ»¸öContent-LengthÍ·Óò³öÏÖÔÚÏìÓ¦ÀËüµÄÖµ±ØÐëÊÇʵ¼ÊµÄÏûÏ¢Ö÷ÌåµÄ×Ö½ÚÊý¡£

- DateÍ·Óò

- ETag ºÍ/»ò Content-LocationÍ·Óò£¬Èç¹ûÕâЩͷÓòÒѾ­ÔÚÒÔǰÏàͬÇëÇóµÄ200ÏìÓ¦Àï·µ»Ø¹ý¡£

- Expire£¬Cache-Control£¬ºÍ/»òÕßVaryÍ·Óò£¬Èç¹ûÓòÖµÓëͬһ±äÁ¿ÒÔǰÏìÓ¦ÖеÄÓòÖµ²»Ò»Ñù¡£

Èç¹û206ÏìÓ¦ÊÇʹÓÃÁËÇ¿»º´æÑéÖ¤£¨¼û13.3.3£©µÄIf-RangeÇëÇóµÄ½á¹û£¬ÄÇô´ËÏìÓ¦²»Ó¦¸Ã°üº¬ÆäËûµÄʵÌåÍ·Óò¡£Èç¹ûÏìÓ¦ÊÇʹÓÃÁËÈõ»º´æÑéÖ¤µÄIf-RangeÇëÇóµÄ½á¹û£¬ÄÇôÏìÓ¦²»Äܰüº¬ÆäËûµÄʵÌåÍ·Óò£»ÕâÄÜ·ÀÖ¹³öÏÖÔÚ»º´æµÄʵÌåÖ÷ÌåºÍ¸üеÄÍ·ÓòÖ®¼äµÄ²»Ò»ÖÂÐÔ¡£ÆäËûµÄÇé¿öÏ£¬ÏìÓ¦±ØÐë°üº¬ËùÓеÄʵÌåÍ·Óò£¬ÕâЩͷÓò¿ÉÄÜÒѾ­ÔÚÒÔǰµÄÏàͬÇëÇóµÄ200ÏìÓ¦Àï·µ»Ø¹ý¡£

»º´æ²»ÄܰÑ206ÏìÓ¦ºÍÒÔǰµÄ»º´æÄÚÈݽáºÏÈç¹ûETag»òLast-ModifiedÍ·Óò²¢²»Äܾ«È·Æ¥Å䣬¼û13.5.4¡£

Ò»¸ö²»ÄÜÖ§³ÖRangeºÍContent-RangeÍ·ÓòµÄ»º´æ²»ÄÜ»º´æ206£¨²¿·ÖµÄ£©ÏìÓ¦¡£

10.3 ÖØÐ¶¨Ïò 3xx.
ÕâÀà״̬ÂëÖ¸Ã÷Óû§´úÀíÐèÒª¸ü½øÒ»²½µÄ¶¯×÷È¥Íê³ÉÇëÇó¡£½øÒ»²½µÄ¶¯×÷¿ÉÄܱ»Óû§´úÀí×Ô¶¯Ö´Ðжø²»ÐèÒªÓû§µÄ½»»¥£¬²¢ÇÒ½øÒ»²½¶¯×÷ÇëÇóµÄ·½·¨±ØÐëΪGET»òHEAD¡£Ò»¸ö¿Í»§¶ËÓ¦¸Ã·¢ÏÖÎÞÏÞµÄÖØ¶¨Ïò»ØÂ·£¬ÒòΪ´Ë»ØÂ·ÄܲúÉúÍøÂçÓµ¼·¡£

×¢Ò⣺ÒÔǰ´Ë¹æ·¶°æ±¾½¨ÒéÒ»¸ö×î¶àÄÜÓÐÎå¸öÖØ¶¨Ïò¡£ÄÚÈÝ¿ª·¢ÕßÓ¦¸ÃÖªµÀ¿Í»§¶Ë¿ÉÄÜ´æÔÚÕâ¸öÏÞÖÆ¡£

10.3.1 300 ¶à¸öÑ¡Ôñ.£¨Multiple Choices£©
×ÊÔ´¶ÔÓ¦Óжà¸ö±íÏÖÐÎʽ£¬¿Í»§¶ËÇëÇó×ÊÔ´µÄ±íÏÖÐÎʽ¶ÔÓ¦ÓÚÆäÖеÄÒ»¸ö£¬Ã¿¸ö±íÏÖÐÎʽ¶¼ÓÐÒ»¸öÖ¸Ïò×Ô¼ºµÄλÖÃ(location)£¬²¢ÇÒ´úÀíÇý¶¯Ð­ÉÌ£¨agent-driven negotiation£©ÄÜÑ¡ÔñÒ»¸ö¸üÊʵıíÏÖÐÎʽ²¢Öض¨ÏòÇëÇóµ½ÄǸö±íÏÖÐÎʽµÄλÖá£

³ý·ÇÊÇHEADÇëÇ󣬷ñÔò300״̬ÏìÓ¦Ó¦¸Ã°üº¬Ò»¸öʵÌ壬´ËʵÌå°üº¬Ò»¸ö×ÊÔ´ÌØÐÔºÍλÖÃÁÐ±í£¬´ÓÕâ¸öÁбíÀïÓû§»òÓû§´úÀíÄÜÑ¡Ôñ×îºÏÊʵÄ×ÊÔ´µÄ±íÏÖÐÎʽ¡£ÊµÌå¸ñʽ±»Content-TypeÍ·ÓòÀïµÄýÌåÀàÐÍÖ¸¶¨¡£ÒÀÀµÓڴ˸ñʽºÍÓû§´úÀíµÄÄÜÁ¦£¬Óû§´úÀíÑ¡Ôñ×îºÏÊʵıíÏÖÐÎʽµÄÐÐΪ¿ÉÄܻᱻ×Ô¶¯Ö´ÐС£È»¶ø£¬´Ë¹æ·¶²¢Ã»Óж¨Òå×Ô¶¯Ö´ÐÐÐÐΪµÄ±ê×¼¡£

Èç¹û·þÎñÆ÷ÄÜÈ·¶¨¸üºÃµÄ±íÏÖÐÎʽ£¬ËüÓ¦¸ÃΪ´Ë±íÏÖÐÎʽÔÚLocationÍ·ÓòÀï°üº¬Ò»¸öÌØ¶¨µÄURIÀ´Ö¸Ã÷´Ë±íÏÖÐÎʽµÄλÖã»Óû§´úÀí¿ÉÄÜ»áÀûÓôËLocationÍ·Óò×Ô¶¯Öض¨Ïò¡£300״̬ÏìÓ¦Êǿɻº´æµÄ³ý·Ç±»ÌرðÖ¸Ã÷¡£

10.3.2 301 ÓÀ¾ÃÒÆ¶¯ £¨Moved Permanently£©
ÇëÇó×ÊÔ´±»¸³ÓÚÒ»¸öеÄÓÀ¾ÃµÄURI£¬²¢ÇÒÈκν«À´¶Ô´Ë×ÊÔ´µÄÒýÓö¼»áÀûÓôË301״̬ÏìÓ¦·µ»ØµÄURI¡£¾ßÓÐÁ´½Ó±à¼­ÄÜÁ¦µÄ¿Í»§¶ËÓ¦¸ÃÄÜ×Ô¶¯°ÑÇëÇóURIµÄÒýÓÃתµ½µ½·þÎñÆ÷·µ»ØµÄеÄÒýÓÃÏ¡£´ËÏìÓ¦ÊÇÄÜ»º´æµÄ³ý·ÇÁíÍâÉùÃ÷¡£

еÄÓÀ¾ÃURIÓ¦¸ÃÔÚÏìÓ¦Öб»LocationÍ·Óò¸ø¶¨¡£³ý·ÇÇëÇó·½·¨ÊÇHEAD£¬·ñÔò´ËÏìÓ¦µÄÍ·ÓòÓ¦¸Ã°üº¬¶Ô´ËÐÂURI³¬Îı¾Á´½ÓµÄÒ»¸ö³¬Îı¾Ìáʾ¡£

Èç¹û¿Í»§¶Ë½ÓÊÕÁËÒ»¸ö301״̬ÏìÓ¦£¬´ËÏìÓ¦ÏàÓ¦µÄÇëÇóµÄ·½·¨²»ÊÇGET»òHEAD£¬ÄÇôÓû§´úÀí²»ÄÜ×Ô¶¯Öض¨ÏòÇëÇ󣬳ý·ÇËüÄܱ»Óû§È·ÈÏ£¬ÒòΪÕâ¿ÉÄÜ»á¸Ä±äÇëÇóÌá½»µÄÌõ¼þ¡£

×¢Ò⣺µ±¿Í»§¶ËÔÚ½ÓÊÕÁË301״̬ÂëÏìÓ¦ºó£¬»áÖØ¶¨ÏòPOSTÇëÇó£¬Ò»Ð©ÒѾ­´æÔÚµÄHTTP/1.0Óû§´úÀí½«´íÎóµÄ°Ñ´ËÇëÇó±ä³ÉÒ»¸öGETÇëÇó¡£

10.3.3 302 ·¢ÏÖ(Found)
ÇëÇóµÄ×ÊÔ´·ÅÔÚÒ»¸ö²»Í¬µÄÔÝʱµÄURIÏ¡£ÒòÎªÖØ¶¨Ïò¿ÉÄܻῶû±»¸Ä±ä£¬¿Í»§¶ËÓ¦¸Ã¼ÌÐøÀûÓÃÇëÇóURI(Request-URI)Ϊ½«À´µÄÇëÇó¡£302ÏìÓ¦ÊÇÖ»ÓÐÔÚCache-Control»òExpiresÍ·ÓòÖ¸Ã÷µÄÇé¿öϲÅÄܱ»»º´æ¡£

ÁÙʱµÄURIÓ¦¸ÃÔÚLocationÍ·ÓòÀïÖ¸¶¨¡£³ý·ÇÇëÇó·½·¨ÊÇHEAD£¬·ñÔòÏìÓ¦µÄʵÌåÓ¦¸Ã°üº¬Ö¸Ïò´ËÐÂURIµÄ³¬Îı¾Á´½ÓµÄ¶Ì³¬³¬Îı¾Ìáʾ¡£

Èç¹û302״̬´úÂëÔÚÒ»¸ö²»ÊÇGETºÍHEAD·½·¨ÇëÇóµÄÏìÓ¦ÖУ¬Óû§´úÀí²»ÄÜ×Ô¶¯Öض¨ÏòÇëÇó³ý·ÇÓû§È·ÈÏ¿ÉÒÔ×Ô¶¯Öض¨Ïò£¬ÒòΪÕâÄܸıäÇëÇóÌá½»µÄµÄÌõ¼þ¡£

×¢Ò⣺RFC1945ºÍRFC2068Ö¸¶¨¿Í»§¶Ë²»ÄÜÔÚÖØ¶¨ÏòÇëÇóµÄʱºò¸Ä±äÇëÇó·½·¨¡£È»¶ø£¬´ó¶àÊýÓû§´úÀíʵÏÖ°Ñ302ÏìÓ¦¿´³ÉÊÇ303ÏìÓ¦£¬¸ù¾ÝLocationÍ·ÓòÖµµÄURIÖ´ÐÐGETÇëÇ󣬲»¹ÜԭʼµÄÇëÇó·½·¨¡£303ºÍ307״̬ÏìÓ¦µÄÄ¿µÄÊÇΪʹ·þÎñÆ÷Ã÷°×¿Í»§¶ËÆÚÍûÄÄÖÖÀàÐ͵ÄÖØ¶¨Ïò¡£

10.3.4 303 ¼ûÆäËû(See Other)
ÇëÇóµÄÏìÓ¦±»·ÅÔÚÒ»¸ö²»Í¬µÄURIÏ£¬²¢ÇÒÓ¦¸ÃÓÃGET·½·¨»ñµÃÄǸö×ÊÔ´¡£´Ë·½·¨µÄ´æÔÚÖ÷ÒªÊÇÔÊÐíPOSTÖ´Ðнű¾µÄÊä³öÖØ¶¨Ïòµ½Óû§Ñ¡ÔñµÄ×ÊÔ´¡£ÐµÄURI²¢²»ÊÇԭʼÇëÇó×ÊÔ´µÄ´úÌæÒýÓá£303ÏìÓ¦²»Äܱ»»º´æ£¬µ«ÊÇÔÙ´ÎÖØ¶¨ÏòÇëÇóµÄÏìÓ¦Ó¦¸Ã±»»º´æ¡£

²»Í¬µÄURIÓ¦¸ÃÔÚLocationÍ·ÓòÀïÖ¸¶¨¡£³ý·ÇÇëÇó·½·¨ÊÇHEAD£¬303ÏìÓ¦µÄʵÌåÓ¦¸Ã°üº¬Ò»¸ö¶ÌµÄÖ¸ÏòеÄURIÁ´½ÓµÄ³¬Îı¾Ìáʾ¡£

×¢Ò⣺Ðí¶àHTTP/1.1ÒÔǰ°æ±¾µÄÓû§´úÀí²»ÄÜÀí½â303״̬ÏìÓ¦¡£µ±ÕâЩ¿Í»§¶Ë±È½Ï¹Ø×¢ÓÚ»¥²Ù×÷ÐÔµÄʱºò£¬302״̬ÂëÓ¦¸Ã±»´úÌæÀûÓã¬ÒòΪ´ó¶àÓû§´úÀí¶Ô302ÏìÓ¦µÄÀí½â¾ÍÊÇ303ÏìÓ¦¡£

10.3.5 304 ûÓб»¸Ä±ä(Not Modified)
Èç¹û¿Í»§¶ËÒѾ­Ö´ÐÐÁËÌõ¼þGETÇëÇ󣬲¢ÇÒ·ÃÎÊ·þÎñÆ÷×ÊÔ´ÊÇÔÊÐíµÄ£¬µ«ÊÇ·þÎñÆ÷ÉϵÄÎĵµ²¢Ã»Óб»¸Ä±ä£¬ÄÇô·þÎñÆ÷Ó¦¸ÃÒÔ´Ë״̬ÂëÏìÓ¦¡£304ÏìÓ¦²»Äܰüº¬Ò»¸öÏûÏ¢Ö÷Ìå(message-body)£¬²¢ÇÒÔÚÍ·ÓòºóÃæ×ÜÊÇÒÔÒ»¸ö¿ÕÐнáÊø¡£

´ËÏìÓ¦±ØÐë°üº¬ÏÂÃæµÄÍ·Óò£º

-Date£¬³ý·Ç14.18.1Ö¸Ã÷µÄÄÇЩ¹æÔòÏÂDateÊÇ¿ÉÒÔÒÅ©µÄ¡£Èç¹ûʱÖÓ²»×¼È·µÄÔ´·þÎñÆ÷×ñÑ­ÕâЩ¹æÔò£¬²¢ÇÒ´úÀí·þÎñÆ÷ºÍ¿Í»§¶ËÔÚ½ÓÊÕÁËÒ»¸öûÓÐDateÍ·ÓòµÄÏìÓ¦ºó¼ÓÉÏÁË×Ô¼ºµÄDate£¨ÕâÔÚRFC 2086ÀïÉùÃ÷ÁË£¬¼û14.19½Ú£©£¬»º´æ½«»áÕýÈ·µØ²Ù×÷¡£

-ETag ºÍ/»ò Content-Location£¬Èç¹ûÕâЩͷÓòÒѾ­ÔÚÏàÇëÇóµÄ200ÏìÓ¦Àï³öÏÖ¹ý¡£

Expires£¬Cache-Control£¬ºÍ/»ò Vary£¬Èç¹ûÕâЩͷÓòµÄÓòÖµ¿ÉÄÜÓëÒÔǰÏàͬÇëÇóµÄÏìÓ¦µÄÓòÖµ²»Ò»Ö¡£

Èç¹ûÌõ¼þGETÓÃÇ¿»º´æÑéÖ¤£¨¼û13.3.3£©½Ú£¬ÄÇôÏìÓ¦²»Ó¦¸Ã°üº¬ÆäËûµÄʵÌåÍ·Óò¡£µ±Ìõ¼þGETÓÃÓÚÈõ»º´æÑé֤ʱ£¬ÄÇôÏìÓ¦²»Äܰüº¬ÆäËûµÄʵÌåÍ·Óò£»ÕâÄÜ·ÀÖ¹»º´æµÄʵÌåÖ÷ÌåºÍ¸üÐÂÁ˵ÄÍ·ÓòÖ®¼äµÄ²»Ò»ÖÂÐÔ¡£

Èç¹û304ÏìÓ¦Ö¸Ã÷ʵÌå²»Äܱ»»º´æ£¬ÄÇô´Ë»º´æ±ØÐëÒÅÆú´ËÏìÓ¦£¬²¢ÇÒÒÔÎÞÌõ¼þÇëÇóÖØ¸´ÇëÇó¡£

Èç¹û»º´æÀûÓÃÒ»¸ö304ÏìӦȥ¸üÐÂÒ»¸ö»º´æÏÄÇô´Ë»º´æ±ØÐë¸üлº´æÏîÀï¹ØÓÚÏìÓ¦ÀïеÄÓòÖµµÄÄÇЩÓòÖµ¡£

10.3.6 305 ʹÓôúÀí·þÎñÆ÷ £¨User Proxy£©
ÇëÇó×ÊÔ´±ØÐëÄÜͨ¹ý´úÀí·þÎñÆ÷·ÃÎÊ£¬´úÀí·þÎñÆ÷µÄµØÖ·ÔÚÏìÓ¦µÄLocationÍ·ÓòÀïÖ¸¶¨¡£LocationÍ·ÓòÖ¸¶¨ÁË´úÀí·þÎñÆ÷µÄURI¡£½ÓÊÕÕß±»ÆÚÍûͨ¹ý´úÀí·þÎñÆ÷ÖØ¸´´ËÇëÇó£¬305ÏìÓ¦±ØÐëÄܱ»Ô´·þÎñÆ÷²úÉú¡£

×¢Ò⣺RFC 2068²¢Ã»ÓÐ˵Ã÷305ÏìÓ¦µÄÄ¿µÄÊÇÖØ¶¨ÏòÒ»¸ö¶ÀÁ¢ÇëÇ󣬲¢ÇÒÖ»Äܱ»Ô´·þÎñÆ÷²úÉú¡£²»×¢ÒâÕâЩÏÞÖÆ»áÓÐÖØÒªµÄ°²È«ºó¹û¡£

10.3.7 306ûÓÐʹÓõģ¨unused£©
306״̬Âë±»ÓÃÓڴ˹淶ÒÔǰµÄ°æ±¾£¬ÊDz»ÔÙʹÓõÄÒâ˼£¬²¢ÇÒ´Ë״̬Âë±»±£Áô¡£

10.3.8 307ÁÙÊ±ÖØ·¢£¨Temporary Redirect£©
ÇëÇóµÄ×ÊÔ´ÁÙʱ´æÔÚÓÚÒ»¸ö²»Í¬µÄURIÏ¡£ÓÉÓÚÖØÐÂÏò¿ÉÄܻῶû¸Ä±ä£¬ËùÒÔ¿Í»§¶ËÓ¦¸Ã¼ÌÐøÀûÓôËÇëÇóURI£¨Request-URI£©Îª½«À´µÄÇëÇó¡£307ÏìÓ¦Ö»Óб»Cache-Control»òExpireÍ·ÓòÖ¸Ã÷ʱ²ÅÄܱ»»º´æ¡£

ÁÙʱURIÓ¦¸ÃÔÚÏìÓ¦µÄLocationÍ·ÓòÀï¸ø¶¨¡£³ý·ÇÇëÇó·½·¨ÊÇHEAD£¬·ñÔòÏìÓ¦µÄʵÌåÓ¦¸Ã°üº¬Ò»¸öÖ¸ÏòÐÂURIµÄ³¬Îı¾Á´½ÓÌáʾ£¬ÒòΪÐí¶àHTTP/1.1ÒÔǰµÄÓû§´úÀí²»ÄÜÀí½â307״̬ÏìÓ¦¡£Òò´Ë£¬´ËÌáʾӦ¸Ã°üº¬Óû§Öظ´Ô­Ê¼ÇëÇóµ½ÐµÄURIµÄ±ØÐèµÄÐÅÏ¢¡£

Èç¹û307״̬ÏìÓ¦.¶ÔÓ¦µÄÇëÇóµÄ·½·¨²»ÊÇGET»òHEAD£¬ÄÇôÓû§´úÀí²»ÄÜ×Ô¶¯Öض¨Ïò´ËÇëÇó³ý·ÇËüÄܱ»Óû§È·ÈÏËü¿ÉÒÔÖØ¶¨Ïò£¬ÒòΪÕâ¿ÉÄܸıäÇëÇóÌá½»µÄÌõ¼þ¡£

10.4 ¿Í»§´íÎó 4xx
 ×´Ì¬Âë4xxÀàµÄÄ¿µÄÊÇΪÁËÖ¸Ã÷¿Í»§¶Ë³öÏÖ´íÎóµÄÇé¿ö¡£³ýÁ˵±ÏìÓ¦Ò»¸öHEADÇëÇ󣬷þÎñÆ÷Ó¦¸Ã°üº¬Ò»¸öʵÌ壬´ËʵÌå°üº¬Ò»¸ö´Ë´íÎóÇëÇóµÄ½âÊÍ¡£´Ë״̬Âë¶ÔËùÓÐÇëÇó·½·¨¶¼ÊÇÊʺϵġ£Óû§´úÀíÓ¦¸ÃչʾÈκÎÏìÓ¦Àï°üº¬µÄʵÌ司Óû§¡£

Èç¹û¿Í»§¶Ë·¢ËÍÊý¾Ý£¬ÀûÓÃTCPµÄ·þÎñÆ÷ʵÏÖÓ¦¸ÃСÐÄÈ·±£¿Í»§¶Ë»Ø¸´°üº¬ÔÚÏìÓ¦ÀïµÄ½ÓÊÕ°ü£¬ÕâÔÚ·þÎñÆ÷¹Ø±Õ´ËÊäÈëÁ¬½Óǰ¡£Èç¹ûÔڹرÕÁ¬½Óºó£¬¿Í»§¶Ë¼ÌÐø·¢ËÍÊý¾Ý¸ø·þÎñÆ÷£¬ÄÇô·þÎñÆ÷µÄTCPÕ»½«·¢ËÍÒ»¸öÖØÖðü¸ø¿Í»§¶Ë£¬

10.4.1 400 »µÇëÇó£¨Bad Request£©
ÇëÇó²»Äܱ»·þÎñÆ÷Àí½â£¬ÓÉÓÚ´íÎóµÄÓï·¨¡£¿Í»§¶Ë²»Ó¦¸ÃûÓиıäÇëÇó¶øÖظ´ÇëÇó¡£

10.4.2 401 δÊÚȨµÄ £¨Unauthorized£©
ÇëÇóÐèÒªÓû§ÊÚȨ¡£ÏìÓ¦±ØÐë°üº¬Ò»¸öWWW-AuthenticateÍ·Óò£¨¼û14.47£©£¬´ËÍ·Óò°üº¬Ò»¸öÊÊÓÃÓÚÇëÇó×ÊÔ´µÄÊÚȨµÄ¼¤·¢¡£¿Í»§¶Ë»áÒÔÒ»¸öAuthorizationÍ·ÓòÖØ¸´´ËÇëÇó¡£Èç¹ûÇëÇó°üº¬ÁËÒ»¸öÊÚȨ֤Ê飬Èç¹û·þÎñÆ÷ÒÔ401ÏìÓ¦£¬ËüÖ¸Ã÷ÕâЩ֤ÊéµÄÊÚȨ±»¾Ü¾ø¡£Èç¹û401ÏìÓ¦°üº¬Ò»¸öͬÑùµÄÊÚȨ¼¤·¢ºÍÒÔǰµÄÏìÓ¦Ò»Ñù£¬²¢ÇÒÓû§´úÀíÒѾ­³¢ÊÔÖÁÉÙÊÚȨÁËÒ»´Î£¬ÄÇôÓû§Ó¦¸Ã±»³ÊÏÖ°üº¬ÔÚÏìÓ¦ÀïµÄʵÌ壬ÒòΪÕâЩʵÌå¿ÉÄܰüº¬Ïà¹ØµÄÕï¶ÏÐÅÏ¢¡£HTTPÊÚȨ·ÃÎÊÔÚ“HTTP Authentication£ºBasic and Digest Access Authentication”[43]Àï½âÊÍ¡£

10.4.3 402 ±ØÐèµÄÖ§¸¶ £¨Payment Required£©
´Ë״̬ÂëΪ½«À´µÄÓ¦Óñ£Áô¡£

10.4.4 403 ½ûÓà £¨Forbidden£©
·þÎñÆ÷Àí½â´ËÇëÇ󣬵«¾Ü¾øÂú×ã´ËÇëÇó¡£ÊÚȨÊÇûÓÐ×÷ÓõIJ¢ÇÒÇëÇó²»Äܱ»Öظ´¡£Èç¹ûÇëÇó·½·¨ÊÇHEAD²¢ÇÒ·þÎñÆ÷ÏëÈÿͻ§¶ËÖªµÀÇëÇóΪʲô²»Äܱ»Âú×㣬ÄÇô·þÎñÆ÷ÆðÓ¦¸ÃÔÚÏìӦʵÌåÀïÃèÊö´Ë¾Ü¾øµÄÔ­Òò¡£Èç¹û·þÎñÆ÷²»Ï£Íû¸æË߿ͻ§¶Ë¾Ü¾øµÄÔ­Òò£¬ÄÇô404״̬Âë(Not Found)ÏìÓ¦½«±»Ê¹Óá£

10.4.5 404 ûÓÐÕÒµ½£¨Not Found£©
·þÎñÆ÷²¢Ã»ÓÐÕÒµ½ÈκοÉÒÔÆ¥ÅäÇëÇóURIµÄ×ÊÔ´¡£Ìõ¼þÊdz¤ÆÚµÄ»¹ÊÇÔÝʱµÄҲûÓб»·þÎñÆ÷Ö¸Ã÷¡£410£¨Gone£©×´Ì¬ÏìÓ¦Ó¦¸Ã±»Ê¹Óã¬Èç¹û·þÎñÆ÷ÖªµÀÒ»¸ö¾ÉµÄ×ÊÔ´²»Äܳ¤ÆÚµÄʹÓò¢ÇÒûÓÐת·¢µØÖ·Ê±¡£ ´Ë״̬Âëͨ³£±ðÓÃÓÚµ±·þÎñÆ÷²»Ï£ÍûÖ¸³öΪʲôÇëÇ󱻾ܾø£¬»òÕßûÓÐÈÎºÎÆäËûÏìÓ¦ÊÇÊʺϵġ£

10.4.6 405 ²»±»ÔÊÐíµÄ·½·¨£¨Method Not Allowed£©
´Ë״̬Âë±íʾÇëÇóÐУ¨Request-Line£©ÀïµÄ·½·¨¶Ô´Ë×ÊÔ´À´Ëµ²»±»ÔÊÐí¡£ÏìÓ¦±ØÐë°üº¬Ò»¸öAllowÍ·Óò£¬´ËÍ·Óò°üº¬ÒÔһϵÁжԴËÇëÇó×ÊÔ´ÓÐЧµÄ·½·¨¡£

10.4.7 406 ²»½ÓÊÜµÄ £¨Not Acceptable£©
¸ù¾Ý¿Í»§¶ËÇëÇóµÄ½ÓÊÜÍ·Óò£¨Òë×¢£ºÈ磺Accept, Accept-Charset, Accept-Encoding, »òÕß Accept-Language£©£¬·þÎñÆ÷²»ÄܲúÉúÈÿͻ§¶Ë¿ÉÒÔ½ÓÊܵÄÏìÓ¦¡£

³ý·ÇÊÇHEADÇëÇó£¬ÏìÓ¦Ó¦¸Ã°üº¬Ò»¸öʵÌ壬´ËʵÌå°üº¬Ò»ÏµÁÐʵÌåµÄÌØÐÔºÍλÖã¬Í¨¹ýËûÃÇÓû§»òÓû§´úÀíÄÜÑ¡Ôñ×îºÏÊʵÄ×ÊÔ´µÄ±íÏÖÐÎʽ¡£ÊµÌå¸ñʽ±»Ã½ÌåÀàÐÍÖ¸¶¨¡£ÒÀÀµÓڴ˸ñʽºÍÓû§´úÀíµÄÄÜÁ¦£¬Ñ¡Ôñ×îºÏÊʵĻᱻ×Ô¶¯Ö´ÐС£È»¶ø£¬´Ë¹æ·¶²¢Ã»Óж¨Òå×Ô¶¯Ö´ÐÐÑ¡ÔñµÄ±ê×¼¡£

×¢Ò⣺HTTP/1.1·þÎñÆ÷±»ÔÊÐí·µ»ØÕâÑùµÄÏìÓ¦£¬´ËÏìÓ¦¸ù¾Ý½ÓÊÜÍ·Óò£¨Òë×¢£ºÈ磺Accept, Accept-Charset, Accept-Encoding, or Accept-Language£©ÊDz»¿É½ÓÊܵġ£ÔÚһЩÇé¿öÏ£¬Õâ¿ÉÄܸüÇãÏòÓÚ·¢ËÍÒ»¸ö406ÏìÓ¦¡£Óû§´úÀí±»¹ÄÀø¹Û²ìÏìÓ¦À´¾ö¶¨ÊÇ·ñ´ËÏìÓ¦ÊǿɽÓÊܵġ£

Èç¹ûÏìÓ¦ÊDz»¿É½ÓÊܵģ¬Óû§´úÀíÓ¦¸ÃÔÝʱֹͣ¸ü¶àµÄÊý¾ÝµÄ½ÓÊÕ²¢ÇÒѯÎÊÓû§È¥¾ö¶¨½øÒ»²½µÄ¶¯×÷¡£

10.4.8 407 ´úÀí·þÎñÆ÷ÊÚȨËùÐ裨Proxy Authentication Required£©
´Ë״̬ÂëºÍ401£¨Unauthorized£©ÏàËÆ£¬µ«ÊÇÖ¸Ã÷¿Í»§¶Ë±ØÐëÊ×ÏÈÀûÓôúÀí·þÎñÆ÷¶Ô×Ô¼ºÊÚȨ¡£´úÀí·þÎñÆ÷±ØÐë·µ»ØÒ»¸öProxy-AuthenticateÍ·Óò£¨¼û14.33½Ú£©£¬´ËÍ·Óò°üº¬Ò»¸öÊÊÓÃÓÚ´úÀí·þÎñÆ÷µÄÊÚȨ¼¤·¢¡£¿Í»§¶Ë¿ÉÄÜ»áÖØ¸´´ËÇëÇóÀûÓÃÒ»¸öºÏÊʵÄProxy-AutorizationÍ·Óò£¨¼û14.34½Ú£©¡£HTTP·ÃÎÊÊÚȨÔÚ“HTTP Authentication£»Basic and Digest Access Authentication”[43]¡£

10.4.9 408 ÇëÇó³¬Ê±£¨Request Timeout£©
¿Í»§¶ËÔÚ·þÎñÆ÷µÈ´ýµÄʱ¼äÀï²»ÄܲúÉúÇëÇ󡣿ͻ§¶Ë¶Ë¿ÉÄÜÔÚÒÔºó»áÖØ¸´´ËÇëÇó¡£

10.4.10 409 ³åÍ» £¨Confilict£©
ÇëÇó²»ÄÜÍê³ÉÓÉÓں͵±Ç°×ÊÔ´µÄ״̬³åÍ»¡£´Ë״̬ÂëÖ»±»ÔÊÐí³öÏÖÔÚÆÚÍûÓû§¿ÉÄÜÄܽâ¾ö´Ë³å²¢ÇÒÄÜÖØÐÂÌá½»´ËÇëÇóµÄÇé¿öÏ¡£ÏìÓ¦Ö÷ÌåÓ¦¸Ã°üº¬×ã¹»µÄΪÓû§ÈÏʶ´Ë×ÊÔ´³åÍ»µÄÐÅÏ¢¡£ÀíÏëµÄÇé¿öÏ£¬ÏìӦʵÌåÓ¦¸Ã°üº¬×㹻ΪÓû§»òÓû§´úÀí½â¾ö´ËÎÊÌâµÄÐÅÏ¢£»È»¶ø£¬ÕâÊDz»¿ÉÄܵIJ¢ÇÒÒ²ÊDz»ÐèÒªµÄ¡£

³åÍ»×î¿ÉÄÜ·¢ÉúÔÚÏìÓ¦PUTÇëÇóµÄʱºò¡£ÀýÈ磬Èç¹û°æ±¾±»Ê¹Óò¢ÇÒ±»Ìá½»µÄʵÌå°üº¬×ÊÔ´µÄ¸Ä±ä£¬ÕâЩ¸Ä±äºÍÒÔǰµÄÇëÇóµÄ¸Ä±äÏë³åÍ»£¬ÄÇô·þÎñÆ÷Ó¦¸ÃʹÓÃ409ÏìӦȥָÃ÷Ëü²»ÄÜÍê³É´ËÇëÇó¡£ÔÚÕâÖÖÇé¿öÏ£¬´ËÏìӦʵÌåÓ¦¸Ã°üº¬ÕâÁ½¸ö°æ±¾µÄ²»Í¬£¬ÏìÓ¦µÄ¸ñʽÔÚÏìÓ¦µÄContent-TypeÍ·ÓòÀïÖ¸¶¨¡£

10.4.11 410 ²»´æÔÚ£¨gone£©
ÇëÇó×ÊÔ´²»ÔÙ¿ÉÒÔÔÚ·þÎñÆ÷Éϵõ½²¢ÇÒÒ²²»ÖªµÀת·¢µØÖ·£¨Òë×¢£º×ªÏò´Ë×ÊÔ´µÄµØÖ·£©¡£´ËÌõ¼þÊdz¤ÆÚÌõ¼þ¡£¾ßÓÐÁ´½Ó±à¼­ÄÜÁ¦µÄ¿Í»§¶ËÓ¦¸ÃÔÚÓû§È·ÈϺóɾ³ýÇëÇóURIµÄÒýÓá£Èç¹û·þÎñÆ÷²»ÖªµÀ»ò²»ÄÜ·½±ãÅж¨Ìõ¼þÊÇ·ñÊdz¤ÆÚµÄ£¬ÄÇô´Ë404£¨Ã»Óз¢ÏÖ£©×´Ì¬ÏìÓ¦½«±»´úÌæÀûÓá£ÏìÓ¦Êǿɻº´æµÄ£¬³ý·ÇÁíÍâÉêÃ÷¡£

410ÏìÓ¦Ö÷ÒªµÄÄ¿µÄÊÇ֪ͨ½ÓÊÕÕß×ÊÔ´²»Äܱ»µÃµ½²¢ÇÒ¸æËß½ÓÊÕÕßÖ¸ÏòÄǸö×ÊÔ´µÄÁ¬½ÓÒѾ­±»Òƶ¯ÁË¡£ÕâÑùÒ»¸öʼþ¶Ôʱ¼äÒªÇó±È½ÏÑϸñµÄ·þÎñÀ´ËµÊÇ±È½ÏÆÕ±éµÄ£¬²¢ÇÒ¶ÔÊôÓÚ¸öÈ˵«ÒѾ­²»ÔÚ·þÎñÆ÷Õ¾µã¹¤×÷µÄÈ˵Ä×ÊÔ´À´Ëµ£¬Õâ¸öʼþÀ´Ò²ÊÇ±È½ÏÆÕ±éµÄ¡£°ÑËùÓг¤ÆÚ²»Äܵõ½µÄ×ÊÔ´±ê¼Ç³É“gone”»ò±£³ÖÕâЩ±ê¼ÇÈÎÒⳤʱ¼ä£¬ÕâÊÇûÓбØÒªµÄ¡£

10.4.12 411 ±ØÐèµÄ³¤¶È £¨Length Required£©
´ËÏìÓ¦·þÎñÆ÷¾Ü¾ø½ÓÊÜûÓаüº¬Content-LengthÍ·ÓòµÄÇëÇ󡣿ͻ§¶Ë¿ÉÒÔÖØ¸´´ËÇëÇóÈç¹ûËüÌí¼ÓÁËÒ»¸öÓÐЧµÄContent-LengthÍ·Óò£¬´ËÍ·Óò°üº¬ÁËÇëÇóÏûÏ¢ÀïÏûÏ¢Ö÷ÌåµÄ³¤¶È¡£

10.4.13 412 ÏȾöÌõ¼þʧ°Ü £¨Precondition Failed£©
ÏȾöÌõ¼þÔÚÒ»¸ö»ò¶à¸öÇëÇóÍ·ÓòÀïÖ¸¶¨£¬412ÏìÓ¦ÊDZíÃ÷ÏȾöÌõ¼þÔÚ·þÎñÆ÷ÉϲâÊÔµÈÓÚfalse¡£´ËÏìÓ¦ÔÊÐí¿Í»§¶Ë°ÑÏȾöÌõ¼þ·Åµ½ÇëÇóÏûÏ¢µÄÔªÐÅÏ¢ÀͷÓòÊý¾Ý£©¡£

10.4.14 413 ÇëÇóʵÌåÌ«´ó
·þÎñÆ÷¾Ü¾ø´¦ÀíÇëÇóÒòΪÇëÇóʵÌåÌ«´óÒÔÖ´ﵽ·þÎñÆ÷²»Ô¸ÒâÈ¥´¦Àí¡£·þÎñÆ÷¿ÉÄܹرմËÁ¬½ÓÈ¥·ÀÖ¹¿Í»§¶Ë¼ÌÐøÇëÇó¡£

Èç¹ûÌõ¼þÊÇÔÝʱµÄ£¬·þÎñÆ÷Ó¦¸Ã°üº¬Ò»¸öRetry-AfterÍ·ÓòÓÃÀ´Ö¸Ã÷´ËÇëÇóÊÇÔÝʱµÄ²¢ÇÒʲôʱ¼äºó¿Í»§¶ËÓ¦¸ÃÖØÊÔ¡£

10.4.15 414 ÇëÇóURIÌ«³¤£¨Request-URI Too Long£©
·þÎñÆ÷¾Ü¾øÎªÇëÇó·þÎñÒòΪ´ËÇëÇóURIÌ«³¤ÁËÒÔÖÁÓÚ·þÎñÆ÷²»ÄÜÀí½â¡£ÕâÖÖÇé¿öÊǺÜÉٵģ¬Ö»·¢ÉúÔÚµ±¿Í»§¶Ë°ÑPOSTÇëÇ󲻺ÏÊʵØ×ª»»Îª´øÓдóÁ¿²éѯÐÅÏ¢µÄGETÇëÇóʱ¡£

10.4.16 415 ²»±»Ö§³ÖµÄýÌåÀàÐÍ£¨Unsupported Media Type£©
·þÎñÆ÷¾Ü¾øÎªÇëÇó·þÎñÒòΪÇëÇóµÄʵÌåµÄ¸ñʽ²»Äܱ»ÇëÇóµÄ×ÊÔ´Ö§³Ö¡£

10.4.17 416 ÇëÇó·¶Î§²»Âú×ã £¨Requested Range Not Satisfiable£©
·þÎñÆ÷·µ»ØÒ»¸ö´Ë״̬ÂëµÄÏìÓ¦£¬Èç¹ûÇëÇó°üº¬Ò»¸öRangeÇëÇóÍ·Óò£¨¼û14.35½Ú£©£¬²¢ÇÒ´ËÍ·ÓòÀïrange-specifierÖµ²»ºÍÑ¡Ôñ×ÊÔ´µÄµ±Ç°µÄextentÖµÖØµþ£¬²¢ÇÒÇëÇóûÓаüº¬Ò»¸öIf-RangeÇëÇóÍ·Óò¡££¨¶Ôbyte-rangesÀ´Ëµ£¬ÕâÒâζ×Åbyte-range-specµÄËùÓÐfirst-byte-pos

Öµ´óÓÚÑ¡ÔñµÄ×ÊÔ´µÄµ±Ç°³¤¶È¡£

µ±´Ë״̬ÂëÏìÓ¦ÔÚÒ»¸öbyte-rangeÇëÇóºó·µ»ØÊ±£¬´ËÏìÓ¦Ó¦¸Ã°üº¬Ò»¸öContent-RangeʵÌåÍ·ÓòÓÃÀ´Ö¸¶¨Ñ¡Ôñ×ÊÔ´µÄµ±Ç°³¤¶È£¨¼û14.16½Ú£©¡£´ËÏìÓ¦²»ÄÜÀûÓÃmultipart/byterangesýÌåÀàÐÍ¡£

10.4.18 417 ÆÚÍûʧ°Ü
ExpectÇëÇóÍ·ÓòÀïÖ¸¶¨µÄÏ£Íû²»Äܱ»·þÎñÆ÷Âú×㣬»òÕߣ¬Èç¹û·þÎñÆ÷ÊÇ´úÀí·þÎñÆ÷£¬·þÎñÆ÷ÓÐÓв»È·¶¨µÄÀíÓÉÈ·¶¨ÇëÇó²»Äܱ»ÏÂÒ»Õ¾µÄ·þÎñÆ÷Âú×ã¡£

10.5 ·þÎñÆ÷´íÎó 5xx £¨Server Error£©
ÕâÀà״̬ÂëÖ¸Ã÷·þÎñÆ÷´¦ÀíÇëÇóʱ²úÉú´íÎó»ò²»ÄÜ´¦ÀíÇëÇó¡£³ýÁËHEADÇëÇ󣬷þÎñÆ÷Ó¦¸Ã°üº¬Ò»¸öʵÌ壬´ËʵÌåÓÃÀ´½âÊÍ´íÎ󣬺ÍÊÇ·ñÊÇÔÝʱ»ò³¤ÆÚÌõ¼þ¡£Óû§´úÀíÓ¦¸ÃչʾʵÌ司Óû§¡£´ËÏìӦ״̬ÂëÄÜÓ¦ÓÃÓÚÈκÎÇëÇó·½·¨¡£

10.5.1 500 ·þÎñÆ÷ÄÚ²¿´íÎó £¨Internal Server Error£©
·þÎñÆ÷Óöµ½ÁËÒ»¸öÒâÍâÌõ¼þ£¬´ËÌõ¼þ·ÀÖ¹·þÎñÆ÷Âú×ã´ËÇëÇó¡£

10.5.2 501 ²»ÄÜʵÏÖ £¨Not Implemented£©
·þÎñÆ÷²»ÄÜÖ§³ÖÂú×ãÇëÇóµÄ¹¦ÄÜÐèÇó¡£Õâ¸öÏìÓ¦ÊǺܺÏÊʵĵ±·þÎñÆ÷²»ÄÜʶ±ðÇëÇó·½·¨Ê±²¢ÇÒ²»ÄÜÖ§³ÖËüÇëÇóµÄ×ÊÔ´µÄʱºò¡£

10.5.3 502 »µÍø¹Ø £¨Bad Gateway£©
´ËÏìӦ˵Ã÷£º·þÎñÆ÷£¬µ±×÷ÎªÍø¹Ø»ò´úÀíʱ£¬Ëü´ÓÉÏÐзþÎñÆ÷½ÓÊÕÁËÒ»¸öÎÞЧµÄÏìÓ¦²¢³¢ÊÔÂú×ã¿Í»§¶ËµÄÇëÇó¡£

10.5.4 503 ÄÑÒÔ»ñµÃµÄ·þÎñ.£¨Service Unavailable£©
·þÎñÆ÷²»ÄÜ´¦ÀíÇëÇóÓÉÓÚ·þÎñÆ÷ÔÝʱµÄ¹ýÔØ»òά»¤¡£Õâ¾ÍÊÇ˵ÕâÊÇÔÝʱÌõ¼þ£¬´ËÌõ¼þ½«»áÔÚһЩÑÓʱºó±»¼õÇá¡£Ñӳٵij¤¶È¿ÉÒÔÔÚRetry-AfterÍ·ÓòÀïÖ¸¶¨¡£Èç¹ûûÓÐRetry-After±»¸ø£¬ÄÇô¿Í»§¶ËÓ¦¸Ã´¦Àí´ËÏìÓ¦¾ÍÏñËü´¦Àí500ÏìÓ¦Ò»Ñù¡£

×¢Ò⣺503״̬ÂëµÄ´æÔÚ²¢²»ÊÇÒâÖ¸·þÎñÆ÷µ±²úÉú¹ýÔØÊ±±ØÐëÀûÓÃËü¡£Ò»Ð©·þÎñÆ÷¿ÉÄÜÏ£Íû¾Ü¾ø´ËÁ¬½Ó¡£

10.5.5 504 Íø¹Ø³¬Ê±£¨Gateway Timeout£©
·þÎñÆ÷£¬µ±×÷ÎªÍø¹Ø»ò´úÀí·þÎñÆ÷ʱ£¬²»ÄܽÓÊÕÒ»¸ö´Ó±»URIÖ¸¶¨µÄÉÏÐзþÎñÆ÷µÄÏìÓ¦£¨ÀýÈ磺HTTP£¬HTTP://www.cnpaf.net/class/ftp' target='_blank'>FTP£¬LDAP·þÎñÆ÷£©»òÕßËüΪÍê³ÉÇëÇó¶øÐèÒª·ÃÎʵÄһЩÆäËûµÄ¸¨ÖúÐÔ·þÎñÆ÷£¨ÀýÈ磺HTTP://www.cnpaf.net/class/dns' target='_blank'>DNS·þÎñÆ÷£©¡£

×¢Ò⣺һЩ²¿ÊðµÄ´úÀí·þÎñÆ÷½«»á·µ»Ø400»ò500ÏìÓ¦µ±HTTP://www.cnpaf.net/class/dns' target='_blank'>DNS²éÕÒ³¬Ê±¡£

10.5.6 505  HTTP°æ±¾²»Ö§³Ö £¨HTTP version Not Supported£©
·þÎñÆ÷²»ÄÜÖ§³Ö£¬»ò¾Ü¾øÖ§³Ö£¬´ËHTTPЭÒé°æ±¾ÏûÏ¢¡£505ÏìÓ¦Ö¸Ã÷·þÎñÆ÷²»ÄÜ»ò²»Ô¸ÒâÍê³ÉÕâÑùµÄÇëÇó£¬ÕâÔÚ3.1ÖÐÃèÊöÁË¡£´ËÏìÓ¦Ó¦¸Ã°üº¬Ò»¸öʵÌ壬´ËʵÌåÃèÊöÁËΪʲô´ËЭÒé°æ±¾²»±»Ö§³ÖºÍÆäËûµÄÄܱ»·þÎñÆ÷Ö§³ÖµÄЭÒé°æ±¾¡£

11.Èë¿ÚÑéÖ¤£¨Access Authentication£©
HTTPÌṩһЩ¿ÉÑ¡µÄÏìÓ¦ÊÚȨ¼¤·¢»úÖÆ£¬ÕâЩ»úÖÆÄܱ»ÓÃÓÚ·þÎñÆ÷¼¤·¢¿Í»§¶ËÇëÇó²¢ÇÒʹ¿Í»§¶ËÊÚȨ¡£³£Ó÷ÃÎÊÊÚȨ¿ò¼Ü£¬»¹ÓГbasic”ºÍ“digest”ÊÚȨ¹æ·¶£¬¶¼ÔÚ“HTTP Authentication£ºbasic and Digest Access Authentication”[43]¹æ·¶ÀïÖ¸¶¨¡£HTTP/1.1¹æ·¶²ÉÓÃÁË“¼¤·¢£¨chanllenge£©”ºÍ“Ö¤Ê飨credentials£©”µÄ¶¨Òå¡£

12.ÄÚÈÝЭÉÌ £¨Content Negotiation£©
´ó¶àÊýÏìÓ¦°üº¬Ò»¸öʵÌ壬´ËʵÌå°üº¬ÈËÀàÓû§ÄÜÀí½âµÄÐÅÏ¢¡£Í¨³££¬Ï£ÍûÌṩ¸øÓû§ÏàÓ¦ÓÚÇëÇó×îÈÝÒ׵õ½µÄʵÌå¡£¶Ô·þÎñÆ÷ºÍ»º´æÀ´Ëµ£¬²»ÐÒµÄÊÇ£¬²¢²»ÊÇËùÓеÄÓû§¶¼¶ÔÕâ¸ö×îÈÝÒ׵õ½µÄʵÌåÓÐϲºÃ£¬²¢ÇÒ²¢²»ÊÇËùÓеÄÓû§´úÀí£¨Èçwebä¯ÀÀÆ÷£©¶¼ÄÜÒ»ÖµijÊÏÖÕâЩʵÌå¡£ËùÒÔ£¬HTTPÌṩÁËһЩ“ÄÚÈÝЭÉÌ”»úÖÆ — µ±Óжà¸ö¿ÉµÃµÄ±íÏÖÐÎʽµÄʱºò£¬¶ÔÌØ¶¨µÄÏìӦѡÔñ×îºÃµÄ±íÏÖÐÎʽµÄ´¦Àí¹ý³Ì¡£

×¢Ò⣺ûÓгÆ×ö“¸ñʽЭÉÌ”£¨Òë×¢£º“¸ñʽ”Ö¸µÄÊǓýÌåÀàÐÍ”£©µÄ£¬ÒòΪ¿ÉÌæ»»µÄ±íÏÖÐÎʽ¿ÉÄÜ»áͬԭÀ´µÄÓÐÏàͬµÄýÌåÀàÐÍ£¬Ö»ÊÇÀûÓÃÁË´ËýÌåÀàÐͲ»Í¬µÄÐÔÖÊ£¬ÀýÈçÒ»ÖÖ²»Í¬µÄÓïÑÔ¡£

Èκΰüº¬Ò»¸öʵÌåÖ÷ÌåµÄÏìÓ¦°üÀ¨´íÎóÏìÓ¦¶¼¿ÉÄÜ»áÊÜЭÉ̵ÄÖ§Åä¡£

ÓÐÁ½ÖÖÀàÐ͵ÄÄÚÈÝЭÉÌÔÚHTTPÖУº·þÎñÆ÷Çý¶¯Ð­É̺ʹúÀíÇý¶¯Ð­ÉÌ¡£ÕâÁ½ÖÖÀàÐ͵ÄЭÉ̾ßÓÐÕý½»ÐÔ²¢ÇÒÄܱ»µ¥¶ÀʹÓûòÁªºÏʹÓá£Ò»¸öÁªºÏʹÓ÷½·¨µÄЭÉ̻ᱻ½Ð×ö͸Ã÷ЭÉÌ£¬µ±»º´æÀûÓôúÀíÇý¶¯Ð­É̵ÄÐÅÏ¢µÄʱºò£¬´Ë´úÀíÇý¶¯Ð­É̵ÄÐÅÏ¢±»ÎªºóÐøÇëÇóÌṩ·þÎñÆ÷Çý¶¯Ð­É̵ÄÔ´·þÎñÆ÷Ìṩ¡£

12.1 ·þÎñÆ÷Çý¶¯Ð­ÉÌ£¨Server-driven Negotiation£©
Èç¹ûÏìÓ¦µÄ×îºÃµÄ±íÏÖÐÎʽµÄÑ¡ÔñÊÇͨ¹ý·þÎñÆ÷ÉϵÄËã·¨À´ÊµÏÖ£¬ÄÇôÕâÖÖ·½Ê½µÄЭÉ̳Æ×ö·þÎñÆ÷Çý¶¯Ð­ÉÌ¡£Ñ¡ÔñÊÇ»ùÓÚÏìÓ¦¿ÉµÃµÄ±íÏÖÐÎʽ£¨¸ù¾Ý²»Í¬µÄά¶È£¬ÏìÓ¦»á²»Í¬£»ÀýÈ磬ÓïÑÔ£¬ÄÚÈݱàÂ룬µÈµÈ£©ºÍÇëÇóÏûÏ¢ÀïÌØ¶¨µÄÍ·Óò»ò¹ØÓÚÇëÇóµÄÆäËûÐÅÏ¢£¨Èç£ºÍøÂç¿Í»§¶ËµÄµØÖ·£©¡£

·þÎñÆ÷Çý¶¯Ð­ÉÌÊÇÓÐÓŵãµÄ£¬µ±´Ó¿ÉÐеıíÏÖÐÎʽÀï½øÐÐÑ¡ÔñµÄËã·¨¶ÔÓû§´úÀí½øÐÐÃèÊöÊDZȽÏÀ§ÄѵÄʱºò£¨Òë×¢£º´úÀíÇý¶¯Ð­ÉÌ£©£¬»òÕßµ±·þÎñÆ÷ÆÚÍû·¢ËÍ“×îºÃµÄ²Â²â”¸ø¿Í»§¶Ë¶øÖ»Í¨¹ýÒ»¸öÏìÓ¦£¨ÒÔ±ÜÃâºóÐøÇëÇóµÄ»ØÂ·£¨Ò»¸öÇëÇó»á·µ»ØÒ»¸öÏìÓ¦£©ÑÓ³ÙÈç¹û´Ë“×îºÃµÄ²Â²â“¶ÔÓû§ÊʺϵÄʱºò£©µÄʱºò¡£ÎªÁ˸ÄÉÆ·þÎñÆ÷µÄ²Â²â£¬Óû§´úÀíÓ¦¸Ã°üº¬ÇëÇóÍ·Óò£¨Accept£¬Accept-Language£¬Accept-Encoding£¬µÈµÈ£©£¬ÕâЩͷÓòÄÜÃèÊöËü¶ÔÏìÓ¦µÄϲºÃ¡£

·þÎñÇý¶¯Ð­ÉÌÓÐÈçÏÂȱµã£º

1.        ¶Ô·þÎñÆ÷²»¿ÉÄÜÈ·Çеľö¶¨¶ÔÓû§À´ËµÊ²Ã´ÊÇ×îºÃµÄ£¬ÒòΪÄÇÐèÒª¶ÔÓû§´úÀíºÍÓû§¶Ô´ËÏìӦĿµÄµÄÈ«ÃæÀí½â£¨È磺Óû§µ½µ×Ïë°ÑÏìӦչʾµ½ÆÁÄ»»¹ÊÇ´òÓ¡µ½Ö½ÉÏ£¿£©¡£

2.        ʹÓû§´úÀíÃèÊöÇëÇóÀïµÄÄÜÁ¦ÊǷdz£ÎÞЧµÄ£¨¼ÙÉèÖ»ÓÐÏìÓ¦µÄһС²¿·ÖÓжà¸ö±íÏÖÐÎʽ£©»¹ÓлáÇÖ·¸Óû§µÄÒþ˽¡£

3.        ʹԴ·þÎñÆ÷µÄʵÏÖ±äµÃ¸´ÔÓ£¬Ò²¶ÔΪÇëÇó²úÉúÏìÓ¦µÄË㷨ʵÏÖ±äµÃ¸´ÔÓ¡£

4.        ¿ÉÄÜ»áÏÞÖÆ¹«Óлº´æ£¨public cache£©Îª¶à¸ö¿Í»§ÇëÇóÀûÓÃÏàͬÏìÓ¦µÄÄÜÁ¦

HTTP/1.1°üº¬ÏÂÃæµÄÇëÇóÍ·ÓòÀ´Ê¹·þÎñÆ÷Çý¶¯Ð­ÉÌÆô¶¯£¬ÕâЩÇëÇóÍ·ÓòÃèÊöÁËÓû§´úÀíµÄÄÜÁ¦ºÍÓû§Ï²ºÃ£ºAccept£¨14.1½Ú£©£¬Accept-Charset£¨14.2½Ú£©£¬Accept-Encoding£¨14.3½Ú£©£¬Accept-Language£¨14.4½Ú£©£¬ºÍUser-Agent£¨14.43½Ú£©¡£È»¶ø£¬Ò»Ð©Ô´·þÎñÆ÷²¢²»Ö»¾ÖÏÞÓÚÕâЩά¶È£¬ÕâЩ·þÎñÆ÷ÄÜ»ùÓÚÇëÇóµÄÈκη½ÃæÀ´ÈÃÏìÓ¦²»Í¬£¬ÕâЩ·½Ãæ°üÀ¨ÇëÇóÍ·ÓòÖ®ÍâµÄÐÅÏ¢»òÔڴ˹淶ÀïûÓж¨ÒåµÄÀ©Õ¹Í·Óò¡£

VaryÍ·ÓòÄܱ»ÓÃÀ´±í´ï·þÎñÆ÷Ñ¡Ôñ±íÏÖÐÎʽ£¨representation£©ÀûÓõIJÎÊý£¬±íÏÖÐÎʽÊÜ·þÎñÆ÷Çý¶¯Ð­É̵ÄÖ§Åä¡£¼û14.44½ÚÃèÊöÁËVaryÍ·ÓòÈçºÎ±»·þÎñÆ÷µÄʹÓã¬13.6½ÚÃèÊöÁËVaryÍ·Óò±»»º´æµÄʹÓá£

12.2 ´úÀíÇý¶¯Ð­ÉÌ £¨Agent-driven Negotiation£©
¶Ô´úÀíÇý¶¯Ð­ÉÌÀ´Ëµ£¬ÏìÓ¦µÄ×îºÃ±íÏÖÐÎʽµÄÑ¡Ôñ±»Óû§´úÀíÖ´ÐУ¬ÕâÔÚ½ÓÊÕµ½Ô´·þÎñÆ÷Ò»¸ö³õʼµÄÏìÓ¦ºó¡£Ñ¡ÔñÊÇ»ùÓÚÏìÓ¦µÄһϵÁпɵõıíÏÖÐÎʽ£¬ÕâЩ±íÏÖÐÎʽ±»°üº¬ÔÚ³õʼÏìÓ¦µÄÍ·Óò»ò³õʼÏìÓ¦µÄʵÌåÖ÷Ì壨entity-body£©Àÿ¸ö±íÏÖÐÎʽ±»Ò»¸öÊôÓÚ×Ô¼ºµÄURIÖ¸¶¨¡£´ÓÕâЩ±íÏÖÐÎʽÖÐÑ¡Ôñ¿ÉÄܱ»×Ô¶¯Ö´ÐУ¨Èç¹ûÓû§´úÀíÓÐÄÜÁ¦ÕâÑù×ö£©»òÕß±»Óû§´Ó³¬Îı¾Á¬½Ó²Ëµ¥ÖÐÊÖ¹¤Ñ¡Ôñ¡£

´úÀíÇý¶¯Ð­ÉÌÊÇÓÐÓŵãµÄ£¬µ±ÏìÓ¦¿ÉÄÜ»á¸ù¾ÝÒ»°ãÓÃ;µÄά¶È£¨È磺ÀàÐÍ£¬ÓïÒ壬±àÂ룩¶ø²»Í¬µÄʱºò£¬µ±Ô´·þÎñÆ÷²»ÄÜͨ¹ý²é¿´ÇëÇó¶øÅж¨Óû§´úÀíÄÜÁ¦µÄʱºò£¬µ±¹²Óлº´æ£¨public cache£©±»ÓÃÀ´·ÖÅÉ·þÎñÆ÷µÄ³ÐÔØºÍ¼õÉÙÍøÂçʹÓõÄʱºò¡£

´úÀíÇý¶¯Ð­ÉÌҲͬÑù´æÔÚÐèÒªµÚ¶þ´ÎÇëÇó¶ø»ñµÃ×îºÃ±íÏÖÐÎʽµÄȱµã¡£µÚ¶þ´ÎÇëÇóÖ»Óе±»º´æ±»Ê¹ÓÃʱ²ÅÊÇÓÐЧÂʵġ£ÁíÍ⣬´Ë¹æ·¶Ã»Óж¨ÒåÓû§´úÀí×Ô¶¯Ñ¡Ôñ±íÏÖÐÎʽµÄ»úÖÆ£¬ËùÒÔ²»ÄÜ·ÀÖ¹ÈκÎÕâÑùµÄ»úÖÆ±»ÓÃÓÚHTTP/1.1

HTTP/1.1¶¨ÒåÁË300£¨¶à¸öÑ¡Ôñ£©ºÍ406£¨²»½ÓÊܵģ©×´Ì¬ÏìÓ¦£¬µ±Ê¹ÓôúÀíÇý¶¯Ð­ÉÌʱ·þÎñÆ÷²»ÄÜ»ò²»Ô¸ÒâÀûÓ÷þÎñÆ÷Çý¶¯Ð­ÉÌÀ´Ìṩһ¸ö²»Í¬µÄÏìÓ¦µÄÊÇʱºò¡£

12.3 ͸Ã÷ЭÉÌ£¨Transparent Negotiation£©
͸Ã÷ЭÉÌÊÇ·þÎñÆ÷Çý¶¯Ð­É̺ʹúÀíÇý¶¯Ð­É̵ĽáºÏÌå¡£µ±Ò»¸ö»º´æ±»ÌṩÁ˹¹³ÉÏìÓ¦µÄһϵÁпɵõıíÏÖÐÎʽ£¨¾ÍÏñÔÚ´úÀíÇý¶¯Ð­ÉÌÀïµÄÏìÓ¦Ò»Ñù£©²¢ÇÒά¶ÈµÄ²îÒìÄÜÍêÈ«±»»º´æÀí½â£¬ÄÇô´Ë»º´æ±äµÃÓÐÄÜÁ¦´ú±íÔ´·þÎñÆ÷ΪÄǸö×ÊÔ´µÄºóÐøÇëÇóÈ¥Ö´ÐзþÎñÆ÷Çý¶¯Ð­ÉÌ¡£

͸Ã÷ЭÉ̵ÄÓŵãÔÚÓÚËüÄÜ·Ö·¢Ô´·þÎñÆ÷µÄЭÉ̹¤×÷²¢ÇÒÄÜÒÆÈ¥´úÀíÇý¶¯Ð­É̵ĵڶþ´ÎÇëÇóµÄÑÓ³Ù£¬ÒòΪ»º´æÄÜÕýÈ·µÄ²Â²âµ½ºÏÊʵÄÏìÓ¦¡£

´Ë¹æ·¶Ã»Óж¨Òå͸Ã÷ЭÉ̵ĻúÖÆ£¬ËùÒÔ£¬Ëü²»ÄÜ·ÀÖ¹ÈκÎÕâÑùµÄ»úÖÆ±»ÓÃÓÚHTTP/1.1¡£

13 HTTPÖеĻº´æ
HTTPµäÐÍÓ¦ÓÃÓÚÄÜͨ¹ý²ÉÓûº´æ¼¼Êõ¶øÌá¸ßÐÔÄܵķֲ¼Ê½ÐÅϢϵͳ¡£HTTP/1.1ЭÒé°üÀ¨µÄÐí¶àʹ»º´æ¾¡¿ÉÄܵŤ×÷µÄÔªËØ¡£ÒòΪÕâÐ©ÔªËØÓëЭÒéµÄÆäËû·½ÃæÓÐ×Åǧ˿ÍòÂÆµÄÁªÏµ£¬¶øÇÒËûÃÇÏ໥×÷Óá¢Ó°Ï죬Òò´ËÓбØÒªµ¥¶ÀµÄÀ´½éÉÜ»ù±¾µÄ»º´æÉè¼Æ¡£

Èç¹û»º´æ²»ÄܸÄÉÆÐÔÄÜ£¬Ëû½«Ò»ÎÞÓô¦¡£HTTP/1.1Öлº´æµÄÄ¿µÄÊÇΪÁËÔںܶàÇé¿öϼõÉÙ·¢ËÍÇëÇó£¬Í¬Ê±ÔÚÐí¶àÇé¿öÏ¿ÉÒÔ²»ÐèÒª·¢ËÍÍêÕûÏìÓ¦¡£Ç°Õß¼õÉÙÁËÍøÂç»ØÂ·£¨Òë×¢£ºÒ»¸öÇëÇó»á·µ»ØÒ»¸öÏìÓ¦£¬ÇëÇóÏìÓ¦Õâ¸ö¹ý³Ì¾ÍÊÇÒ»¸ö»ØÂ·£©µÄÊýÁ¿£»ÎÒÃÇÀûÓÃÒ»¸ö“¹ýÆÚ£¨expiration£©”»úÖÆÀ´Îª´ËÄ¿µÄ£¨¼û13.2½Ú£©¡£ºóÕß¼õÉÙÁËÍøÂçÓ¦ÓõĴø¿í£»ÎÒÃÇÓÓÑéÖ¤£¨validation£©”»úÖÆÀ´Îª´ËÄ¿µÄ¡£

¶ÔÐÐΪ£¬¿ÉÐÐÐÔ£¬ºÍ¹Ø±ÕµÄ²Ù×÷µÄÒªÇó·ÅËÉÁËÓïÒå͸Ã÷ÐÔµÄÄ¿µÄ¡£HTTP/1.1ЭÒéÔÊÐí·þÎñÆ÷£¬»º´æ£¬ºÍ¿Í»§¶ËÄÜÏÔʾµØ½µµÍ͸Ã÷ÐÔµ±ÔÚ±ØÒªµÄʱºò¡£È»¶ø£¬ÒòΪ²»Í¸Ã÷µÄ²Ù×÷ÄÜ»ìÏý·ÇרҵµÄÓû§£¬Í¬Ê±¿ÉÄܺÍij¸ö·þÎñÆ÷Ó¦ÓóÌÐò²»¼æÈÝ£¨ÀýÈç¶©¹ºÉÌÆ·£©£¬Òò´Ë´ËЭÒé͸Ã÷ÐÔÔÚÏÂÃæÇé¿öϲÅÄܱ»·ÅËÉÒªÇó£º

-- Ö»ÓÐÔÚÒ»¸öÏÔʾµÄЭÒé²ãµÄÇëÇóʱ£¬Í¸Ã÷ÐÔ²ÅÄܱ»¿Í»§¶Ë»òÔ´·þÎñÆ÷·ÅËÉ

-- µ±³öÏÖÒ»¸ö¶ÔÖÕ¶ËÓû§µÄÏÔʾµÄ¾¯¸æÊ±£¬Í¸Ã÷ÐÔ²ÅÄܱ»»º´æ»ò±»¿Í»§¶Ë·ÅËÉ

Òò´Ë£¬HTTP/1.1ЭÒéÌṩÕâÐ©ÖØÒªµÄÔªËØ£º

1£®ÌṩÍêÕûÓïÒå͸Ã÷µÄЭÒéÌØÕ÷£¬µ±ÕâÐ©ÌØÕ÷±»Í¨ÐŵÄËùÓз½ÐèҪʱ

2. ÔÊÐíÔ´·þÎñÆ÷»òÓû§´úÀíÏÔʾµÄÇëÇóºÍ¿ØÖƲ»Í¸Ã÷²Ù×÷µÄЭÒéÌØÕ÷

3. ÔÊÐí»º´æ¸øÕâÑùµÄÏìÓ¦°ó¶¨¾¯¸æÐÅÏ¢µÄЭÒéÌØÕ÷£¬ÕâЩÏìÓ¦²»Äܱ£ÁôÇëÇóµÄÓïÒå͸Ã÷µÄ½üËÆ

Ò»¸ö»ù±¾µÄÔ­ÔòÊǿͻ§¶Ë±ØÐëÄܹ»·¢ÏÖÓïÒå͸Ã÷ÐÔµÄDZÔڵķÅËÉ¡£

×¢Ò⣺·þÎñÆ÷£¬»º´æ£¬»òÕ߿ͻ§¶ËµÄʵÏÖÕß¿ÉÄÜ»áÃæ¶ÔÉè¼ÆÉϵÄÅжϣ¬¶øÕâЩÅжÏûÓÐÏÔʾµØÔڴ˹淶ÀïÌÖÂÛ¡£Èç¹ûÒ»¸öÅжϿÉÄÜ»áÓ°ÏìÓïÒå͸Ã÷ÐÔ£¬ÄÇôʵÏÖÕßÓ¦¸ÃÄÜά³ÖÓïÒå͸Ã÷ÐÔ£¬³ý·ÇÒ»¸ö×ÐϸµÄÍêÕûµÄ·ÖÎöÄÜ˵Ã÷´òÆÆÍ¸Ã÷ÐԵĺô¦¡£

13.1.1»º´æÕýÈ·ÐÔ£¨Cache Correctness£©
Ò»¸öÕýÈ·µÄ»º´æ±ØÐëÄÜÓÃ×îеÄÏìÓ¦À´ÏìÓ¦ÇëÇ󣬴ËÏìÓ¦µ±ÔÚÏÂÃæµÄÌõ¼þÂú×ãʱ²ÅÊʺϴËÇëÇ󣨼û13.2.5£¬13.2.6£¬ºÍ13.12£©

´Ë»º´æÏìÓ¦Òѱ»¼ì²âÓë¼ÙÉèͨ¹ýÔ´·þÎñÆ÷ÖØÑéÖ¤ºóÔ´·þÎñÆ÷·µ»ØµÄÏìÓ¦ÏàµÈ¼Û¡£

´Ë»º´æÏìÓ¦ÊÇ×ã¹»±£ÏÊ(fresh)µÄ£¨¼û13.2½Ú£©¡£È±Ê¡µÄÇé¿öÏ£¬ÕâÒâζ×Å´ËÏìÓ¦±ØÐëÂú×ã¿Í»§¶Ë£¬Ô´·þÎñÆ÷£¬ºÍ»º´æµÄ×îÑϸñµÄ±£ÏÊÒªÇ󣨼û14.9½Ú£©£»Èç¹ûÔ´·þÎñÆ÷Ö¸¶¨Á˱£ÏÊÊÙÃü£¬Õâ˵Ã÷ËüÊÇÔ´·þÎñÆ÷×Ô¼ºµÄ±£ÏÊÒªÇó¡£

ÓÉÓÚ¿Í»§¶ËºÍÔ´·þÎñÆ÷µÄ×îÑϸñµÄ±£ÏÊÒªÇó£¬Èç¹ûÒ»¸ö»º´æµÄÏìÓ¦²»ÊÇ×ã¹»±£Ïʵģ¬ÄÇôÔÚ×Ðϸ¿¼ÂǵÄÇé¿öÏ£¬»º´æ¿ÉÄÜÈÔÈ»·µ»Ø´Ë»º´æµÄÏìӦͨ¹ýºÏÊʵÄWarningÍ·Óò£¨¼û13.1.5ºÍ14.46½Ú£©£¬³ý·Ç´ËÏìÓ¦±»×èÖ¹£¨ÀýÈ磺ͨ¹ý”no-store” cache-directive £¬»òÕßͨ¹ýÒ»¸ö”no-cache”cache-request-directive£»¼û14.9½Ú£©¡£

´Ë»º´æÏìÓ¦ÊÇÒ»¸ö304£¨Ã»Óб»¸Ä±ä£©£¬305£¨´úÀíÖØ¶¨Ïò£©£¬»ò ´íÎó£¨4xx»òÕß5xx£©ÏìÓ¦ÏûÏ¢¡£

Èç¹û»º´æ²»ÄÜͬԴ·þÎñÆ÷ͨÐÅ£¬ÄÇôһ¸öÕýÈ·µÄ»º´æÓ¦¸ÃÓÃËü»º´æµÄÏìӦȥÏìÓ¦ÇëÇó£¬Èç¹û´Ë»º´æµÄÏìÓ¦ÄÜÕýÈ·µÄ·þÎñÓÚÇëÇó£»Èç¹û²»ÄÜ·þÎñÆ÷ÓÚ´ËÇëÇó£¬ÄÇô»º´æ±ØÐëÄÜ·µ»ØÒ»¸ö´íÎó»ò¾¯¸æÖ¸Ê¾´æÔÚͨÐÅʧ°Ü¡£

Èç¹û»º´æ´Ó·þÎñÆ÷¶Ë½ÓÊÕµ½Ò»¸öÏìÓ¦£¨»òÕßÊÇÒ»¸öÍêÕûµÄÏìÓ¦£¬»òÕßÒ»¸ö304£¨Ã»Óб»¸Ä±ä£©µÄÏìÓ¦£©£¬´ËÏìÓ¦Ó¦¸ÃÊÇÕý³£Çé¿öÏÂÒª·¢Ë͵½ÇëÇóµÄ¿Í»§¶ËµÄ£¬²¢ÇÒ´ËÏìÓ¦²¢²»ÊÇÐÂÏʵģ¬ÄÇô´Ë»º´æÓ¦¸Ã°Ñ´ËÏìӦת·¢¸øÇëÇó¿Í»§¶Ë²»ÐèÒªÌí¼ÓÒ»¸öеÄWarningÍ·Óò£¨µ«ÊÇûÓÐÒÆÈ¥ÒѾ­´æÔÚµÄWarningÍ·Óò£©¡£»º´æ²¢²»ÊǼòµ¥µÄÒòΪ´«ÊäÖÐÏìÓ¦±äµÃ³Â¾É¶ø³¢ÊÔÈ¥ÖØÑéÖ¤ÏìÓ¦£»Õâ¿ÉÄܻᵼÖÂÒ»¸öÎÞÏÞµÄÑ­»·¡£Óû§´úÀí½ÓÊÕÒ»¸ö³Â¾ÉµÄûÓÐWarningÍ·ÓòµÄÏìÓ¦Ó¦¸ÃÌáʾÓû§Ò»¸ö¾¯¸æÐÅÏ¢¡£

13.1.2¾¯¸æÐÅÏ¢£¨Warnings£©
ÎÞÂÛºÎʱ£¬»º´æ·µ»ØÒ»¸öÏìÓ¦£¬´ËÏìÓ¦¼È²»ÊǵÚÒ»ÊÖµÄ(first-hand)Ò²²»ÊÇ×ã¹»±£ÏÊ£¨ÔÚ13.1.1½ÚµÄÌõ¼þ2£©£¬ÄÇô»º´æ±ØÐëÀûÓÃÒ»¸öWarning³£ÓÃÍ·ÓòÀ´¾¯¸æ²úÉúµÄЧ¹û¡£WarningÍ·ÓòºÍµ±Ç°¶¨ÒåµÄ¾¯¸æÔÚ14.46½ÚÀïÃèÊö¡£ÕâЩ¾¯¸æÔÊÐí¿Í»§¶ËÈ¥²ÉÈ¡ºÏÊʵ͝×÷¡£

¾¯¸æ¿ÉÄܱ»ÓÃÓÚÆäËûµÄÄ¿µÄ£¬ºÍ»º´æÏà¹ØµÄÄ¿µÄºÍÆäËûµÄÄ¿µÄ¡£¾¯¸æºÍ´íÎó״̬ÂëµÄÇø±ðÔÚÓÚÊÇ·ñÊÇÕæÕýµÄʧ°Ü¡£

¾¯¸æ±»¸³ÓèÈýλÊý×Öwarn-codes¡£µÚÒ»¸öÊý×ÖÖ¸Ã÷£º¾¯¸æÊÇ·ñ±ØÐë»ò²»±ØÐë´Ó»º´æÏîÀïɾ³ý£¬ÔÚÒ»¸ö³É¹¦µÄÖØÑéÖ¤Ö®ºó¡£

1xx ¾¯¸æÃèÊöÁËÏìÓ¦µÄ±£ÏÊ»òÖØÑé֤״̬ÐÅÏ¢£¬²¢ÇÒÕâЩÐÅÏ¢Ó¦¸ÃÔÚÒ»¸ö³É¹¦µÄÖØÑéÖ¤Ö®ºóɾ³ý¡£1xx¾¯¸æÂë¿ÉÄÜÊÇÓÉ»º´æ²úÉúµÄ£¬µ±»º´æÑéÖ¤Ò»¸ö»º´æÏîʱ¡£´Ë¾¯¸æÂë²»Äܱ»¿Í»§¶Ë²úÉú¡£

2xx ¾¯¸æÃèÊöÁËʵÌåÖ÷Ìå»òʵÌåÍ·ÓòµÄijЩ·½ÃæµÄÐÅÏ¢£¬ÕâЩÐÅÏ¢²»Äܱ»ÖØÑéÖ¤Ð޸쬲¢ÇÒÕâЩÐÅÏ¢²»ÄÜÔÚÒ»¸ö³É¹¦ÖØÑéÖ¤Ö®ºó±»É¾³ý¡£

¼û14.46½Ú¹ØÓÚ¾¯¸æÂëµÄ¶¨Òå¡£

HTTP/1.0»º´æ½«»º´æËùÓÐÏìÓ¦Öеľ¯¸æ£¬²¢ÇÒ²»»áɾ³ýµÚÒ»Àྯ¸æ¡£´©¹ýHTTP/1.0»º´æÏìÓ¦Öеľ¯¸æ»áЯ´øÒ»¸ö¶îÍâµÄwarning-dateÓò£¬ÕâÊÇΪÁË·ÀÖ¹½«À´µÄHTTP/1.1½ÓÊÕ¶ËÐÅÈÎÒ»¸ö´íÎóµÄ»º´æ¾¯¸æ¡£

¾¯¸æÍ¬ÑùЯ´øÒ»¸ö¾¯¸æÎı¾¡£´ËÎı¾¿ÉÄÜÊÇÈκκÏÊʵÄ×ÔÈ»ÓïÒ壨¿ÉÄÜ»ùÓÚ¿Í»§¶ËÇëÇóµÄAcceptÍ·Óò£©£¬Í¬Ê±°üº¬Ò»¸ö¿ÉÑ¡ÔñµÄ¹ØÓÚºÎÖÖ×Ö·û¼¯±»Ê¹ÓõÄÉùÃ÷¡£

¶à¸ö¾¯¸æ¿ÉÄÜ»á°ó¶¨Ò»¸öÏìÓ¦£¨»òÕß±»Ô´·þÎñÆ÷»òÕß±»Ò»¸ö»º´æ·¢Ë͵ģ©£¬Õâ°üÀ¨¶à¸ö¾¯¸æ¿ÉÒÔ¹²ÓÃÒ»¸ö¾¯¸æÂë¡£ÀýÈ磬·þÎñÆ÷¿ÉÄÜ»áÒÔÓ¢ÓïºÍ·¨ÓïÌṩÏàͬµÄ¾¯¸æ¡£

µ±¶à¸ö¾¯¸æ°ó¶¨Ò»¸öÏìӦʱ£¬ÓÐʱºò²»¿ÉÄܰÑËùÓеľ¯¸æ¶¼Õ¹Ê¾¸ø¿Í»§¡£HTTP°æ±¾²»ÄÜÖ¸¶¨Ò»¸öÑϸñµÄÓÅÏÈֵȥ¾ö¶¨¾¯¸æµÄÓÅÏȺÍ˳ÐòÏÔʾ£¬µ«ÊÇ¿ÉÒÔ̽Ë÷һЩ·½·¨¡£

13.1.3»º´æ¿ØÖÆ»úÖÆ £¨Cache-control Mechanism£©
HTTP/1.1»ù±¾µÄ»º´æ»úÖÆ£¨·þÎñÆ÷Ö¸¶¨¹ýÆÚʱ¼äºÍÑéÖ¤Æ÷£©¶Ô»º´æÊÇÒþº¬µÄÖ¸ÁijЩÇé¿öÏ£¬·þÎñÆ÷»ò¿Í»§¶Ë¿ÉÄÜÐèÒª¸øHTTP»º´æÌṩÏÔʾµÄÖ¸Áî¡£ÎÒÃÇÀûÓÃCache-ControlÍ·ÓòΪ´ËÄ¿µÄ¡£

Cache-ControlÍ·ÓòÔÊÐí¿Í»§¶Ë»ò·þÎñÆ÷ÔÚÇëÇó»òÏìÓ¦Àï´«Êä¶à¸öÖ¸Áî¡£ÕâЩָÁî³£³£¸²¸ÇȱʡµÄ»º´æËã·¨¡£×÷Ϊһ¸ö³£ÓùæÔò£¬Èç¹ûÍ·ÓòÖµÖдæÔÚÒ»¸öÃ÷ÏԵijåÍ»£¬ÄÇô×î¾ßÑϸñ½âÊ͵ÄÍ·ÓòÖµ»á±»Ó¦Óã¨Ò²¾ÍÊÇ˵£¬Äܱ£ÁôÓïÒå͸Ã÷ÐÔµÄÖµ£©¡£È»¶ø£¬Ò»Ð©Çé¿öÏ£¬cache-controlÖ¸Áî±»ÏÔʾµØÖ¸¶¨ÓÃÀ´Ï÷ÈõÓïÒå͸Ã÷ÐÔµÄÏàËÆÐÔ£¨ÀýÈ磬”max-stale” »òÕß “public”£©¡£

Cache-controlÖ¸ÁîÔÚ14.9½Ú±»ÃèÊö¡£

13.1.4ÏÔʾµÄÓû§´úÀí¾¯¸æ£¨Explicit User Agent Warnings£©
ºÜ¶àÓû§´úÀíÔÊÐíÓû§¸²¸Ç»ù±¾»º´æ»úÖÆ¡£ÀýÈ磬Óû§´úÀí¿ÉÄÜÔÊÐíÓû§Ö¸¶¨»º´æÊµÌ壨¼´Ê¹ÊµÌåÃ÷ÏÔÊdz¾ɵģ©´ÓÀ´²»Òª±»ÑéÖ¤¡£»òÕߣ¬Óû§´úÀí¿ÉÄÜϰ¹ßÓÚ¸øÈκÎÇëÇó¼ÓÉÏ“Cache-Control£ºmax-stale=3600”¡£Óû§´úÀí²»ÄÜȱʡµÄÖ´Ðв»Í¸Ã÷ÐÐΪ£¬»òÕß²»ÄÜȱʡµÄÖ´Ðе¼Ö·ÇÕý³£µÄÎÞЧÂʵĻº´æÐÐΪ£¬µ«ÊÇ¿ÉÄܱ»ÏÔʾµØÉèÖÃÈ¥ÕâÑù×öͨ¹ýÒ»¸öÏÔʾµÄÓû§¶¯×÷¡£

Èç¹ûÓû§ÒѾ­¸²¸Ç»ù±¾µÄ»º´æ»úÖÆ£¬ÄÇôÓû§´úÀíÓ¦¸Ã¸øÓû§Ö¸Ê¾ºÎʱÏÔʾ²»ÄÜÂú×ã·þÎñÆ÷͸Ã÷ÒªÇóµÄÐÅÏ¢£¨ÌØ±ðµØ£¬Èç¹ûÏÔʾµÄʵÌå±»ÈÏΪÊdz¾ɵģ©¡£ÒòΪ´ËЭÒéͨ³£ÔÊÐíÓû§´úÀíÈ¥Åж¨ÏìÓ¦ÊÇ·ñÊdz¾ɻò²»Êdz¾ɵģ¬ËùÒÔ´ËָʾֻÐèÒªµ±Êµ¼Ê·¢ÉúʱÏÔʾ¡£´Ëָʾ²»±ØÊǶԻ°¿ò£»ËüÓ¦¸ÃÊÇÒ»¸öͼ±ê£¨ÀýÈ磬һ¸öÕýÔÚ¸¯ÀõÄÓ㣩»òÕßһЩÆäËûµÄָʾÆ÷¡£

Èç¹ûÓû§ÒÔÒ»ÖÖ·½Ê½ÒѾ­¸²¸ÇÁË»º´æ»úÖÆ£¬ÕâÖÖ·½Ê½¿ÉÄܲ»Õý³£µØ¼õÉÙ»º´æÐ§ÂÊ£¬ÄÇôÓû§´úÀíÓ¦¸Ã¼ÌÐøÖ¸Ê¾Óû§µÄ״̬£¨ÀýÈ磬ͨ¹ýÒ»¸öͼƬÏÔʾ£©ÒÔ±ãÓû§²»Äܲ»×¢ÒâµØÏû·Ñ¹ý¶ÈµÄ×ÊÔ´»òÕßÈÌÊܹý¶ÈµÄÑÓ³Ù¡£

13.1.5¹æÔòºÍ¾¯¸æµÄÀýÍâÇé¿ö
ÔÚijЩÇé¿öÏ£¬»º´æµÄ²Ù×÷ÕßÓ¦¸ÃÉèÖûº´æ·µ»Ø³Â¾ÉµÄÏìÓ¦£¬¼´Ê¹´ËÏìӦûÓб»¿Í»§¶ËÇëÇó¡£Õâ¸öÅж¨±¾À´²»Ó¦¸ÃÇáÒ×¾ö¶¨£¬µ«ÊÇÓÉÓÚijЩԭÒò¿ÉÄÜ»áÕâÑù×ö£¬ÌرðÊǵ±»º´æºÍÔ´·þÎñÆ÷Á¬½Ó²»ºÃʱ¡£ÎÞÄܺÎʱµ±»º´æ»á·µ»ØÒ»¸ö³Â¾ÉµÄÏìӦʱ£¬»º´æ±ØÐë¸ø´ËÏìÓ¦×ö¸ö±ê¼Ç£¨ÀûÓÃWarningÍ·Óò£©£¬ÒòΪÕâÑùÄÜʹ¿Í»§¶ËÌáʾÓû§ÏìÓ¦Êdz¾ɵġ£

Óû§´úÀíÕÕÑùÄܲÉÈ¡²½ÖèÈ¥»ñµÃµÚÒ»ÊֵĻò±£ÏʵÄÏìÓ¦¡£ÓÉÓÚÕâ¸öÔ­Òò£¬Èç¹û¿Í»§¶ËÏÔʾµØÇëÇóµÚÒ»ÊֵĻò±£ÏʵÄÏìÓ¦£¬»º´æ¾Í²»ÄÜ·µ»ØÒ»¸ö³Â¾ÉµÄÏìÓ¦£¬³ý·ÇÓÉÓÚ¼¼Êõ»ò²ßÂÔ·½ÃæµÄÔ­Òò¡£

13.1.6Óɿͻ§¿ØÖƵÄÐÐΪ£¨Client-controlled Behavior£©
µ±Ô´·þÎñÆ÷ÊǹýÆÚÐÅÏ¢µÃÖ÷ÒªÀ´Ô´Ê±£¬ÓÐʱºò¿Í»§¶Ë¿ÉÄÜÐèÒª¿ØÖÆ»º´æÈ¥Åж¨ÊÇ·ñ·µ»ØÒ»¸ö»º´æÏìÓ¦¶ø²»ÐèÒª»º´æÍ¨¹ý·þÎñÆ÷ÑéÖ¤Ëü¡£¿Í»§¶Ëͨ¹ýÀûÓÃһЩCache-ControlÍ·ÓòÀ´´ïµ½´ËÄ¿µÄ¡£

¿Í»§¶ËµÄÇëÇó¿ÉÄÜ»áÖ¸¶¨×Ô¼ºÔ¸Òâ½ÓÊÜÒ»¸öûÓÐÑéÖ¤µÄÏìÓ¦µÄ×î´óµÄÄêÁ䣨age£©£»Ö¸¶¨0Öµ»áÇ¿ÆÈ»º´æÖØÑéÖ¤ËùÓеÄÏìÓ¦¡£¿Í»§¶ËÕÕÑù»áÖ¸¶¨ÔÚÏìÓ¦¹ýÆÚǰµÄ×îС±£³Öʱ¼ä¡£ÕâЩѡÏîÔö¼ÓÁ˶Իº´æÐÐΪµÄÏÞÖÆ£¬Í¬Ê±ÕâÑù×ö²¢²»ÄܽøÒ»²½µØ·ÅËÉ»º´æÓïÒå͸Ã÷µÄ½üËÆ¡£

¿Í»§¶Ë¿ÉÄÜÕÕÑù»áÖ¸¶¨Ëü»á½ÓÊܳ¾ÉÏìÓ¦Ö±µ½³Â¾ÉÊý´ïµ½×î´óÊýÁ¿¡£Õâ·ÅËÉÁ˶Իº´æµÄÏÞÖÆ£¬Í¬Ê±Õâ¿ÉÄÜÎ¥·´ÁËÔ´·þÎñÆ÷Ö¸¶¨¶ÔÓïÒå͸Ã÷ÐÔµÄÏÞÖÆ£¬µ«ÊÇÕâ¿ÉÄÜÖ§³ÖÎÞÁ¬½ÓµÄ²Ù×÷»òÕ߸߻ñµÃÐÔµ±Á¬½Ó²»ºÃʱ¡£

13.2 ¹ýÆÚÄ£ÐÍ £¨Expiration Model£©
13.2.1 ·þÎñÆ÷Ö¸¶¨Ä£ÐÍ£¨Server-Specified Expiratiion£©
HTTP»º´æ»á¹¤×÷µÄºÜºÃ£¬ÕâÊÇÒòΪ»º´æÄÜÍêÈ«µØ±ÜÃâ¿Í»§¶Ë¶ÔÔ´·þÎñÆ÷µÄÇëÇó¡£±ÜÃâ¶ÔÔ´·þÎñÆ÷ÇëÇóµÄÖ÷Òª»úÖÆÊÇ·þÎñÆ÷½«À´»áÌṩһ¸öÏÔʾ¹ýÆÚʱ¼ä£¨explicit expiration time£©£¬´ËÏÔʾ¹ýÆÚʱ¼äÓÃÀ´Ö¸Ê¾ÏìÓ¦¿ÉÄÜ»áÂú×ãºóÐøµÄÇëÇó¡£Ò²¾ÍÊÇ˵£¬¿Í»§¶ËÇëÇóÏìӦʱ£¬»º´æÄÜ·µ»ØÒ»¸ö±£ÏÊ£¨fresh£©µÄÏìÓ¦¶ø²»ÐèÒª´ÓÔ´·þÎñÆ÷ÄÇÀï»ñµÃ¡£

ÎÒÃÇÏ£Íû·þÎñÆ÷¸øÏìÓ¦ÉèÖÃÏÔʾ¹ýÆÚʱ¼ä£¨explicit expiration time£©£¬·þÎñÆ÷ÏàÐÅÔÚ¹ýÆÚʱ¼ä֮ǰʵÌå²»»á¸Ä±ä¡£ÕâÄܱ£³ÖÓïÒå͸Ã÷ÐÔ£¨Òë×¢£ºÓïÒå͸Ã÷ÐÔÇé¿ö1.3½ÚÀï¹ØÓÚ“ÓïÒå͸Ã÷”µÄ½âÊÍ£©£¬Ö»Òª·þÎñÆ÷¶Ô¹ýÆÚʱ¼ä×ÐϸѡÔñ¡£

¹ýÆÚ»úÖÆÖ»ÄÜÓ¦ÓÃÓÚÄÜ´Ó»º´æ»ñµÃµÄÏìÓ¦£¬²»ÄÜÓ¦ÓÃÓÚ¿Í»§¶ËÇëÇóµÄµÚÒ»ÊÖ£¨first-hand£¬¼û1.3½ÚÊõÓµÄÏìÓ¦¡£

Èç¹ûÔ´·þÎñÆ÷Ï£ÍûÇ¿ÖÆÒ»¸öÓïÒå͸Ã÷»º´æÈ¥Ñé֤ÿ¸öÇëÇó£¬Ëü»áʹÏÔʾ¹ýÆÚʱ¼ä£¨explicit expiration time£©ÉèΪ¹ýÈ¥¡£Õâ¾ÍÊÇ˵ÏìÓ¦×ÜÊdz¾ɵģ¬ËùÒÔ´Ë»º´æÓ¦¸ÃÑéÖ¤´ËÏìÓ¦µ±»º´æÀûÓôËÏìӦȥ·þÎñÓÚºóÐøµÄÇëÇóʱ¡£¼û14.9.4½Ú£¬Óиü¶àÇ¿ÆÈÖØÑéÖ¤µÄ·½·¨

Èç¹ûÔ´·þÎñÆ÷Ï£ÍûÇ¿ÆÈÈκÎHTTP/1.1»º´æ£¨²»¹Ü´Ë»º´æÊÇÔõÑùÉèÖõģ©È¥Ñé֤ÿһ¸öÇëÇó£¬Ô´·þÎñÆ÷Ó¦¸ÃÔÚCache-ControlÍ·ÓòÀïÖ¸¶¨“must-revalidate”»º´æ¿ØÖÆÖ¸Á¼û14.9½Ú£©¡£

Ô´·þÎñÆ÷ÀûÓÃExpiresÍ·Óò»òÔÚCache-ControlÍ·ÓòÀïͨ¹ýmax-age»º´æ¿ØÖÆÖ¸ÁÀ´Ö¸¶¨ÏÔʾ¹ýÆÚʱ¼ä£¨explicit expiration time£©¡£

¹ýÆÚʱ¼ä²»Äܱ»ÓÃÓÚÇ¿ÖÆ¿Í»§´úÀíÈ¥ÖØÐÂË¢ÐÂËüµÄÏÔʾ»òÖØÔØ×ÊÔ´£»¹ýÆÚµÄÓïÒåÖ»ÄÜÓ¦ÓÃÓÚ»º´æ»úÖÆ£¬²¢ÇÒÕâ¸ö»úÖÆÖµÖ»ÐèÒª¼ì²â×ÊÔ´µÄ¹ýÆÚ״̬µ±ÇëÇóÄǸö×ÊÔ´µÄÒ»¸öÐÂÇëÇó·¢Éúʱ¡£¼û13.13½Ú£¬¹ØÓÚ»º´æºÍÀúÊ·»úÖÆµÄÇø±ð¡£

13.2.2 Æô·¢Ê½¹ýÆÚ
ÒòΪԴ·þÎñÆ÷²»ÄÜ×ÜÊÇÌṩһ¸öÏÔʾ¹ýÆÚʱ¼ä£¨explicit expiration time£©£¬HTTP»º´æÍ¨³£»áÉèÖÃÒ»¸öÆô·¢Ê½¹ýÆÚʱ¼ä£¨heuristic expiration time£©£¬Ëü²ÉÓÃÒ»ÖÖËã·¨£¬´ËËã·¨ÀûÓÃÆäËüµÄÖµ£¨ÀýÈçLast-Modifiedʱ¼ä£©È¥¹À¼ÆÒ»¸öËÆºõºÏÀíµÄ¹ýÆÚʱ¼ä¡£HTTP/1.1¹æ·¶Ã»ÓÐÌá¹©ÌØ¶¨µÄËã·¨£¬µ«ÊǵÄÈ·ÊǼÓÇ¿Á˶ÔÕâЩËã·¨½á¹ûµÄ×Çé¿öµÄÏÞÖÆ¡£ÒòΪÆô·¢Ê½¹ýÆÚʱ¼ä¿ÉÄÜ»á¶ÔÓïÒå͸Ã÷ÐÔÍ×Э£¬ËûÃDZ¾Ó¦¸Ã±»½÷É÷µØÊ¹Ó㬲¢ÇÒÎÒÃǹÄÀøÔ´·þÎñÆ÷¾¡¿ÉÄÜÌṩÏÔʾ¹ýÆÚʱ¼ä¡£

13.2.3  ÄêÁ䣨Age£©¼ÆËã
ΪÁËÁ˽⻺´æÏÒë×¢£º»º´æÏîÊÇÓÃÀ´ÏìÓ¦ÇëÇóµÄ£¬Ëü°üº¬»º´æµÄÏìӦʵÌ壩ÊÇ·ñÊDZ£Ïʵģ¨fresh£©£¬»º´æÐèÒªÖªµÀÆäÄêÁäÊÇ·ñÒѳ¬¹ý±£ÏÊÊÙÃü£¨freshness lifetime£©¡£ÎÒÃÇÔÚ13.2.4½ÚÖÐÌÖÂÛÈçºÎ¼ÆËã±£ÏÊÊÙÃü£¬±¾½ÚÌÖÂÛÈçºÎ¼ÆËãÏìÓ¦»ò»º´æÏîµÄÄêÁä¡£

ÔÚ´ËÌÖÂÛÖÐÎÒÃÇÓÓnow”À´±íʾÖ÷»ú½øÐмÆËãʱʱÖӵēµ±Ç°Öµ”¡£Ê¹ÓÃHTTPЭÒéµÄÖ÷»ú£¬ÌرðÊÇÔËÐÐÓÚÔ´·þÎñÆ÷ºÍ»º´æµÄÖ÷»ú£¬Ó¦¸ÃʹÓÃNTP[28] »òÆäËûÀàËÆÐ­ÒéÀ´½«ÆäʱÖÓͬ²½µ½Ò»¸öÈ«ÇòÐԵľ«È·Ê±¼ä±ê×¼ÉÏ¡£

HTTP1.1ЭÒéÒªÇóÔ´·þÎñÆ÷¾¡¿ÉÄÜÔÚ·¢ËÍÿÌõÏìӦʱ¶¼¸½¼ÓÒ»¸öDateÍ·Óò£¬Òª¾¡¿ÉÄÜÔÚÿ¸öÏìÓ¦Àï¸ø³öÏìÓ¦²úÉúµÄʱ¼ä£¨¼û14.18½Ú£©¡£ÎÒÃÇÀûÓÃÊõÓï“date_value”È¥±íʾDateÍ·ÓòµÄÖµ£¬ÕâÊÇÒ»ÖÖÊʺÏÓÚÔËËã²Ù×÷µÄ±íʾ·½·¨¡£

µ±´Ó»º´æÀï»ñÈ¡ÏìÓ¦ÏûϢʱ£¬HTTP/1.1ÀûÓÃAgeÏìӦͷÓòÀ´´«ËÍÏìÓ¦ÏûÏ¢µÄ¹À¼ÆÄêÁä¡£AgeÏìӦͷÓòÖµÊÇ»º´æ¶ÔÏìÓ¦´Ó²úÉú»ò±»ÖØÑéÖ¤¿ªÊ¼µ½ÏÖÔÚµÄʱ¼ä¹À¼ÆÖµ¡£

ʵ¼ÊÉÏ£¬ÄêÁäµÄÖµÊÇÏìÓ¦´ÓÔ´·þÎñÆ÷;¾¶Ã¿Ò»¸ö»º´æµÄ¶ºÁôʱ¼äµÄ×ܺͣ¬ÔÙ¼ÓÉÏÏìÓ¦ÔÚÍøÂç·¾¶ÉÏ´«ÊäµÄʱ¼ä¡£

ÎÒÃÇÓÓage_value”À´±íʾAgeÍ·ÓòµÄÖµ£¬ÕâÊÇÒ»ÖÖÊÊÓÚËãÊõ²Ù×÷µÄ±íʾ·½·¨¡£

Ò»¸öÏìÓ¦µÄÄêÁä(age)¿ÉÒÔͨ¹ýÁ½ÖÖÍêÈ«²»Í¬µÄ;¾¶À´¼ÆËã:£º

Èç¹û±¾µØÊ±ÖÓÓëÔ´·þÎñÆ÷ʱÖÓͬ²½µÄÏ൱ºÃ£¬ÔòÓà now - date_value £¬Èô½á¹ûΪ¸º£¬ÔòÈ¡Áã¡£

Èç¹û;¾¶ÏìӦ·¾¶£¨response path£©µÄËùÓлº´æ¾ù×ñÑ­HTTP1.1ЭÒ飬ÔòÓÃage_value¡£

Èç¹ûÎÒÃÇÓÐÁ½ÖÖ¶ÀÁ¢µÄ·½·¨¼ÆËãÏìÓ¦µÄÄêÁ䣨Òë×¢£º×¢ÒâÕâÀïÊÇÏìÓ¦µÄÄêÁ䣩£¬ÎÒÃÇ¿ÉÒԺϲ¢¶þÕßÈçÏ£º

corrected_received_age = max£¨now – date_value£¬age_value£©

²¢ÇÒÖ»ÒªÎÒÃÇ»òÕßÓÐͬ²½µÄʱÖÓ»òÕßÏìӦ;¾¶µÄËùÓлº´æ×ñÑ­HTTP/1.1£¬ÎÒÃǾÍÄܵõ½Ò»¸ö¿ÉÐÅÀµµÄ½á¹û¡£

ÓÉÓÚÍøÂ總¼ÓÑÓʱ£¬Ò»Ð©ÖØÒªÊ±Ï¶»áÔÚ·þÎñÆ÷²úÉúÏìÓ¦ÓëÏÂÒ»¸ö»º´æ»ò¿Í»§¶Ë½ÓÊÕÖ®¼äÁ÷ÊÅ¡£Èç¹û²»¾­ÐÞ¶©£¬ÕâÒ»ÑÓ³Ù»á´øÀ´²»Õý³£µÄµÍÄêÁä¡£

ÓÉÓÚµ¼Ö²úÉúÄêÁäÖµµÄÇëÇó£¨Òë×¢£º¾ÍÊÇ´æÔÚAgeÍ·ÓòµÄÇëÇó£©ÊÇÔçÓÚÄêÁäÖµµÄ²úÉú£¬ÎÒÃÇÄÜУÕýÍøÂ總¼ÓÑÓ³Ùͨ¹ý¼Ç¼ÇëÇó²úÉúµÄʱ¼ä¡£È»ºó£¬µ±Ò»¸öÄêÁäÖµ±»½ÓÊÕºó£¬Ëü±ØÐë±»½âÊͳÉÏà¶ÔÓÚÇëÇó²úÉúµÄʱ¼ä£¬¶ø²»ÊÇÏà¶ÔÏìÓ¦½ÓÊÕµÄʱ¼ä¡£²»¹ÜÓжàÉÙÑÓ³Ù£¬´ËËã·¨»áµ¼ÖÂÎȶ¨µÄ½á¹û¡£ËùÒÔ£¬ÎÒÃǼÆË㣺

      corrected_initial_age = corrected_received_age + £¨now - request_time£©

ÕâÀï“request_time”ÊÇÇëÇóµÄ·¢ËÍʱ¼ä¡£

»º´æÊÕµ½ÏìӦʱ£¬Ëü¼ÆËãÏìÓ¦ÄêÁäµÄËã·¨ÈçÏ£º

      /*

       * age_value

       *      is the value of Age: header received by the cache with this response.

       * date_value

       *      is the value of the origin server's Date: header

       * request_time

       *      is the £¨local£© time when the cache made the request

       *              that resulted in this cached response

       * response_time

       *      is the £¨local£© time when the cache received the response

       * now

       *      is the current £¨local£© time

       */

      apparent_age = max£¨0, response_time - date_value£©; //»º´æÊÕµ½ÏìӦʱÏìÓ¦µÄÄêÁä

      corrected_received_age = max£¨apparent_age, age_value£©;

      response_delay = response_time - request_time;

      corrected_initial_age = corrected_received_age + response_delay;

      resident_time = now - response_time; //¼´ÊÕµ½ÏìÓ¦µ½ÏÖÔÚµÄʱ¼ä¼ä¸ô

      current_age   = corrected_initial_age + resident_time;

»º´æÏcache entry£©µÄcurrent_ageÊÇ»º´æÏî´Ó±»Ô´·þÎñÆ÷×îºóÑéÖ¤¿ªÊ¼µ½ÏÖÔÚµÄʱ¼ä¼ä¸ô£¨ÒÔÃë¼Ç£©¼ÓÉÏcorrected_initial_age¡£µ±´Ó»º´æÏîÀï²úÉúÒ»ÌõÏìӦʱ£¬»º´æ±ØÐëÔÚÏìÓ¦Àï°üº¬Ò»¸öAgeÍ·Óò£¬ËüµÄÖµÓ¦¸ÃµÈÓÚ»º´æÏîµÄcurrent_ageÖµ¡£

AgeÍ·Óò³öÏÖÔÚÏìÓ¦Àï˵Ã÷ÏìÓ¦²»ÊǵÚÒ»Êֵģ¨first-hand£©£¨Òë×¢£ºµÚÒ»ÊÖµÄ˵Ã÷£¬ÏìÓ¦ÊÇÖ±½ÓÀ´×ÔÓÚÔ´·þÎñÆ÷µ½´ï½ÓÊն˵쬶ø²»ÊÇÀ´×ÔÓÚ»º´æÀï±£´æµÄ¸±±¾£©¡£È»¶øÏà·´µÄÇé¿ö²¢²»³ÉÁ¢£¬ÒòΪÏìÓ¦ÀïȱÉÙAgeÍ·Óò²¢²»ÄÜ˵Ã÷ÏìÓ¦ÊǵÚÒ»ÊÖµÄ(fisrt-hand)£¬³ý·ÇËùÓÐÇëÇó·¾¶ÉϵĻº´æ¶¼×ñÑ­HTTP/1.1ЭÒ飨Ҳ¾ÍÊÇ˵£¬ÒÔǰHTTP°æ±¾»º´æÃ»Óж¨ÒåAgeÍ·Óò£©¡£

13.2.4 ¹ýÆÚ¼ÆË㣨Expiration Calculations£©
ΪÁËÈ·¶¨Ò»ÌõÏìÓ¦ÊDZ£Ïʵģ¨fresh£©»¹Êdz¾ɵģ¨stale£©£¬ÎÒÃÇÐèÒª½«Æä±£ÏÊÊÙÃü£¨freshness lifetime)ºÍÄêÁä(age)½øÐбȽϡ£ÄêÁäµÄ¼ÆËã¼û13.2.3½Ú£¬±¾½Ú½²½âÔõÑù¼ÆËã±£ÏÊÊÙÃü£¬ÒÔ¼°Åж¨Ò»¸öÏìÓ¦ÊÇ·ñÒѾ­¹ýÆÚ¡£ÔÚÏÂÃæµÄÌÖÂÛÖУ¬ÊýÖµ¿ÉÒÔÓÃÈκÎÊÊÓÚËãÊõ²Ù×÷µÄÐÎʽ±íʾ¡£

ÎÒÃÇÓÃÊõÓï“expires_value”À´±íÃ÷ExpiresÍ·ÓòµÄÖµ¡£ÎÒÃÇÓÃÊõÓï“max_age_value”À´±íʾCache-ControlÍ·ÓòÀï“max-age”¿ØÖÆÖ¸ÁîµÄÖµ£¨¼û14.9.3½Ú£©¡£

max-ageÖ¸ÁîÓÅÓÚExpiresÍ·ÓòÖ´ÐУ¬ËùÒÔÈç¹ûmax-age³öÏÖÔÚÏìÓ¦ÀÄÇô¶¨ÒåÈçÏ£º

      freshness_lifetime = max_age_value

·ñÔò£¬ÈôExpiresÍ·Óò³öÏÖÔÚÏìÓ¦À¶¨ÒåÈçÏ£º

      freshness_lifetime = expires_value - date_value

×¢ÒâÉÏÊöÔËËã²»ÊÜʱÖÓÎó²îÓ°Ï죬ÒòΪËùÓÐÐÅÏ¢¾ùÀ´×ÔÔ´·þÎñÆ÷¡£

Èç¹ûExpires£¬ Cache-Control£ºmax-age, »ò Cache-Control£ºs-maxage £¨¼û 14.9.3£© ¾ùδÔÚÏìÓ¦ÖгöÏÖ£¬ÇÒÏìӦûÓаüº¬¶Ô»º´æµÄÆäËû¿ØÖÆ£¬ÄÇô»º´æ¿ÉÒÔÓÃÆô·¢Ê½Ëã·¨¼ÆËã±£ÏÊÊÙÃü£¨freshness lifetime£©¡£»º´æÆ÷±ØÐë¶ÔÄêÁä´óÓÚ24СʱµÄÏìÓ¦¸½¼Ó113¾¯¸æ£¬Èç¹û´ËÏìÓ¦²»´øÕâÖÖ¾¯¸æ¡£

¶øÇÒ£¬Èç¹ûÏìÓ¦ÓÐ×îºóÐÞ¸Äʱ¼ä£¬Æô·¢Ê½¹ýÆÚÖµÓ¦²»´óÓÚ´ÓÄǸöʱ¼ä¿ªÊ¼¼ä¸ôµÄij¸ö·ÖÊý¡£µäÐÍÉèÖÃΪ¼ä¸ôµÄ10% ¡£

¼ÆËãÏìÓ¦ÊÇ·ñ¹ýÆÚ·Ç³£¼òµ¥£º

 response_is_fresh = £¨freshness_lifetime > current_age£©

13.2.5³ÎÇå¹ýÆÚÖµ£¨Disambiguation Expiration Values£©
ÓÉÓÚ¹ýÆÚÖµºÜÈÝÒ×±»ÉèÖã¬ÓпÉÄÜÁ½¸ö»º´æ»á°üº¬Í¬Ò»×ÊÔ´µÄ²»Í¬±£ÏÊÖµ¡£

Èç¹û¿Í»§¶ËÖ´ÐÐÇëÇó½ÓÊÕµ½Ò»¸ö·ÇµÚÒ»ÊÖµÄÏìÓ¦£¬´ËÏìÓ¦Ôڴ˿ͻ§¶ËÓµÓеĻº´æÀïÈÔÈ»ÊDZ£Ïʵ쬲¢ÇÒ»º´æÀïµÄ»º´æÏîÀïµÄDateÍ·ÓòµÄÖµ±È´ËÐÂÏìÓ¦µÄDateÍ·ÓòֵҪУ¬ÄÇô¿Í»§¶ËÓ¦¸ÃºöÂÔ´ËÏìÓ¦¡£Èç¹ûÕâÑù£¬Ëü¿ÉÄÜ»áÖØÐÂÒÔ“Cache-Control£ºmax-age=0”Ö¸Á¼û14.9½Ú£©ÇëÇóÈ¥Ç¿ÖÆÈκÎÖм仺´æÍ¨¹ýÔ´·þÎñÆ÷¶ÔÆä½øÐмì²é¡£

Èç¹û»º´æ¶ÔÓв»Í¬ÑéÖ¤Æ÷£¨validator£©µÄͬһ¸ö±íÏÖÐÎʽ£¨representation£©ÓÐÁ½¸ö±£ÏÊÏìÓ¦£¬ÄÇô»º´æ±ØÐëÀûÓÃDateÍ·ÓòÖµ×î½üµÄÏìÓ¦¡£ÕâÖÖÇé¿ö¿ÉÄÜ·¢ÉúÓÉÓÚ»º´æ»á´ÓÆäËû»º´æµÃµ½ÏìÓ¦£¬»òÕßÓÉÓÚ¿Í»§¶ËÇëÇó¶ÔÒ»¸ö±£ÏÊ»º´æÏîµÄÖØÔØ»òÖØÑéÖ¤£¨revalidation£©¡£

13.2.6³ÎÇå¶à¸öÏìÓ¦£¨Disambiguating Multiple Response£©
ÒòΪ¿Í»§¶Ë¿ÉÄÜÊÕµ½¾­¶à¸ö·¾¶¶øÀ´µÄÏìÓ¦£¬ËùÒÔÓÐЩÏìÓ¦»á¾­¹ýһЩ»º´æ£¬¶øÆäËûµÄÏìÓ¦»á¾­¹ýÆäËûµÄ»º´æ£¬¿Í»§¶ËÊÕµ½ÏìÓ¦µÄ˳Ðò¿ÉÄÜÓëÔ´·þÎñÆ÷·¢ÏìÓ¦µÄ˳Ðò²»Í¬¡£ÎÒÃÇÏ£Íû¿Í»§¶ËÀûÓÃ×îеÄÏìÓ¦£¬¼´Ê¹¾ÉÏìÓ¦ÈÔÈ»ÊDZ£Ïʵġ£

ʵÌå±êÇ©£¨entity tag£©ºÍ¹ýÆÚÖµ¶¼²»ÄÜÓ°ÏìÏìÓ¦µÄ˳Ðò£¬ÒòΪ¿ÉÄÜ»á³öÏÖÍíÒ»µãµÄÏìÓ¦¿ÉÄÜ»á¹ÊÒâЯ´ø¹ýÔçµÄ¹ýÆÚʱ¼ä¡£ÈÕÆÚÖµµÄ¾«¶È±»¹æ¶¨Ö»ÓÐÒ»Ãë¡£

µ±¿Í»§¶ËÊÔ×ÅÖØÐÂÑéÖ¤Ò»¸ö»º´æÏîµÄʱºò£¨Òë×¢£ºÕâÀïµÄ¿Í»§¶ËÓ¦¸Ã°üº¬Ò»¸ö±¾µØ»º´æ£©£¬¶øÇÒ½ÓÊÕµ½µÄÏìÓ¦µÄDateÍ·ÓòÍíÓÚÒÑ´æÔڵĻº´æÏÄÇô¿Í»§¶ËÓ¦¸ÃÖØÐ½øÐÐÎÞÌõ¼þÇëÇ󣬲¢ÇÒ°üº¬

       Cache-Control: max-age=0

È¥Ç¿ÖÆÈκÎÖм仺´æÍ¨¹ýÔ´·þÎñÆ÷À´ÑéÖ¤£¨validate£©ÕâЩÖм仺´æµÄ¸±±¾£¬»òÕß

       Cache-Control: no-cache

È¥Ç¿ÖÆÈκÎÖм仺´æÈ¥´ÓÔ´·þÎñÆ÷»ñµÃÒ»¸öеĸ±±¾¡£

13.3 Ñé֤ģÐÍ£¨Validation Model£©
µ±»º´æÓÐÒ»¸ö¾É»º´æÏî²¢ÇÒ»º´æÏëÀûÓô˻º´æÏîÀ´×÷Ϊ¿Í»§¶ËÇëÇóµÄÏìӦʱ£¬»º´æ±ØÐëÊ×ÏÈͨ¹ýÔ´·þÎñÆ÷£¨»òÕß¿ÉÄÜͨ¹ýÒ»¸öÓб£ÏÊÏìÓ¦µÄÖм仺´æ£©¶ÔÆä½øÐмìÑé¿´¿´´Ë»º´æÏîÊÇ·ñ¿ÉÓá£ÎÒÃdzÆ×ö“ÑéÖ¤£¨validating£©”´Ë»º´æÏî¡£ÒòΪÎÒÃDz»Ïë¶ÔÍêÕûÏìÓ¦µÄ´«Ê丶³öÌ«´ó´ú¼Û£¬¶øÇÒÈç¹û»º´æÏîÎÞЧʱҲ²»»á²úÉú¶îÍâµÄ»ØÂ·£¨Òë×¢£º»ØÂ·µÄÒâ˼£¬È磺´ÓÇëÇóµ½ÏìÓ¦¾ÍÒ»Ìõ»ØÂ·£©£¬HTTP1.1ЭÒéÖ§³ÖʹÓÃÌõ¼þ·½·¨¡£.

ЭÒéÖ§³ÖÌõ¼þ·½·¨µÄ¹Ø¼üÌØÕ÷ÊÇÎ§ÈÆ“»º´æÑéÖ¤Æ÷£¨cache validator£©”Õ¹¿ªµÄ¡£µ±Ô´·þÎñÆ÷²ú³ÉÒ»¸öÍêÕûÏìӦʱ£¬Ëüͬʱ»á¸½¼ÓһЩÑéÖ¤Æ÷¸øÏìÓ¦£¬ÕâЩÑéÖ¤Æ÷ºÍ»º´æÏîÒ»Æð±£´æ¡£µ±¿Í»§¶Ë£¨Óû§´úÀí»ò»º´æ·þÎñÆ÷£©¶Ô¶ÔÓ¦Óлº´æÏîµÄ×ÊÔ´Ö´ÐÐÌõ¼þÇëÇóʱ£¬¿Í»§¶Ë°üº¬Ò»¸öÏà¹ØµÄÑéÖ¤Æ÷£¨validator£©ÔÚÇëÇóÀï¡£

·þÎñÆ÷£¨Òë×¢£º·þÎñÆ÷¿ÉÄÜÊÇ»º´æ·þÎñÆ÷£©ÔòºË¶ÔÇëÇóÀïµÄÑéÖ¤Æ÷ºÍµ±Ç°±¾µØµÄÑéÖ¤Æ÷ÊÇ·ñÆ¥Å䣬Èç¹ûËûÃÇÆ¥Å䣨¼û13.3.3£©£¬Ôò·µ»ØÒ»¸öÌØ¶¨×´Ì¬Â루ͨ³£Îª304£¨Ã»Óиı䣩£©µÄÏìÓ¦²¢ÇÒ´ËÏìÓ¦²»°üº¬ÊµÌåÖ÷Ì壨entity body£©¡£Èç¹û²»Æ¥Å䣬·þÎñÆ÷¾Í·µ»ØÍêÕûÏìÓ¦£¨°üº¬ÊµÌåÖ÷Ì壩¡£ÕâÑù£¬ÎÒÃǾͱÜÃâÁË´«ÊäÍêÕûÏìÓ¦Èç¹ûÑéÖ¤Æ÷Æ¥Å䣬ͬʱÎÒÃÇÒ²±ÜÃâÁ˶îÍâµÄ»ØÂ·Èç¹ûÑéÖ¤Æ÷²»Æ¥Åä¡£

ÔÚHTTP1.1ЭÒéÖУ¬Ò»¸öÌõ¼þÇëÇóºÍÆÕͨµÄÇëÇó²î²»¶à£¬³ýÁËÌõ¼þÇëÇóЯ´øÒ»Ð©ÌØÊâµÄÍ·Óò£¨ÕâЩͷÓò°üº¬ÑéÖ¤Æ÷£©£¬°üº¬ÕâÐ©ÌØÊâµÄÍ·ÓòÒþº¬µØ±íÃ÷ÇëÇó·½·¨£¨Í¨³£ÊÇGET·½·¨£©ÎªÌõ¼þÇëÇó·½·¨¡£

ЭÒéÖаüÀ¨»º´æÑéÖ¤Ìõ¼þµÄÕýºÍ¸º¡£Ò²¾ÍÊÇ˵ÇëÇó·½·¨½«»áÖ´ÐÐÈç¹ûÑéÖ¤Æ÷µÄÆ¥Åä»ò²»»áÖ´ÐÐÈç¹ûÑéÖ¤Æ÷²»Æ¥Åä¡£

×¢Ò⣺ȱÉÙÑéÖ¤Æ÷µÄÏìÓ¦¿ÉÄܻᱻ»º´æ£¬¶øÇһᱻ»º´æÓÃÀ´ÎªÇëÇóÌṩ·þÎñÖ±µ½»º´æµÄ¸±±¾¹ýÆÚ£¬³ý·ÇÏÔʾµØÓûº´æ¿ØÖÆÖ¸ÁîÀ´½ûÖ¹»º´æÕâÑù×ö¡£È»¶ø£¬»º´æ²»ÄÜÖ´ÐÐÌõ¼þ·½·¨»ñÈ¡×ÊÔ´Èç¹ûËüûÓдË×ÊԴʵÌåµÄÑéÖ¤Æ÷£¬ÄÇÒâζ×Å»º´æ¸±±¾½«»á²»¿É¸üÐÂÔÚËü¹ýÆÚºó¡£

13.3.1×îºóÐÞ¸ÄÈÕÆÚ £¨Last-Modified Dates£©
Last-ModifedʵÌåÍ·ÓòÖµ¾­³£±»ÓÃ×÷Ò»¸ö»º´æÑéÖ¤Æ÷¡£¼ò¶øÑÔÖ®£¬»º´æÏî±»ÈÏΪÊÇÓÐЧµÄÈç¹ûʵÌå×Ô´ÓLast-ModifedÖµÖ®ºóûÓиı䡣

13.3.2 ʵÌå±êÇ©»º´æÑéÖ¤Æ÷£¨Entity Tag Cache Validators£©
ETagÏìӦͷÓòÖµÊÇʵÌå±êÇ©£¬ËüÌṩÁËÒ»¸ö“²»Í¸Ã÷£¨opaque£©µÄ»º´æÑéÖ¤Æ÷¡£ÕâÄܵõ½¸ü¿É¿¿µÄÑéÖ¤µ±ÔÚ²»·½±ã´æ·ÅÐÞ¸ÄÈÕÆÚµÄÇé¿öÏ£¬µ±ÔÚHTTPÈÕÆÚÖµµÄÒ»Ã뾫¶È²»ÄÜÂú×ãÐèÒªµÄÇé¿öÏ£¬»òµ±ÔÚÔ´·þÎñÆ÷Ï£Íû±ÜÃâʹÓÃÐÞ¸ÄÈÕÆÚ²úÉúµÄ³åÍ»µÄÇé¿öÏ¡£

ʵÌå±êÇ©ÔÚ3.11½ÚÃèÊöÁË¡£Ê¹ÓÃÁËʵÌå±êÇ©µÄÍ·ÓòÔÚ14.19£¬14.24£¬14.26ºÍ14.44½ÚÀïÃèÊöÁË¡£

13.3.3 Ç¿,ÈõÑéÖ¤Æ÷ £¨Weak and Strong Validators£©
ÓÉÓÚÔ´·þÎñÆ÷ºÍ»º´æ»á±È½ÏÁ½¸öÑéÖ¤Æ÷À´È·¶¨ËûÃÇÊÇ·ñ´ú±íÏàͬµÄʵÌ壬ËùÒÔͨ³£Ï£ÍûʵÌ壨entity£¬ÊµÌåÖ÷Ìå»òʵÌåÍ·Óò£©·¢ÉúÈκα仯ʱÑéÖ¤Æ÷Ò²ÏàÓ¦±ä»¯£¬ÕâÑùµÄÑéÖ¤Æ÷ΪǿÑéÖ¤Æ÷¡£.

È»¶ø£¬¿ÉÄÜ´æÔÚÕâÑùµÄÇëÇ󣬷þÎñÆ÷ÇãÏòÓÚ½öÔÚʵÌå·¢ÉúÖØÒªµÄÓïÒå±ä»¯Ê±²Å¸Ä±äÑéÖ¤Æ÷£¬¶øÔÚʵÌåµÄijЩ·½Ãæ²»·¢ÉúÖØ´ó¸Ä±äʱ¾Í²»¸Ä±äÑéÖ¤Æ÷¡£ÔÚ×ÊÔ´±ä»¯Ê±ÑéÖ¤Æ÷δ±Ø±ä»¯µÄ³ÆÎªÈõÑéÖ¤Æ÷.¡£

ʵÌå±êǩͨ³£ÊÇÇ¿ÑéÖ¤Æ÷£¬µ«Ð­ÒéÌṩһÖÖ»úÖÆÀ´Ê¹ÊµÌå±êÇ©±ä³ÉÈõÑéÖ¤Æ÷¡£¿ÉÒÔÈÏΪǿÑéÖ¤Æ÷ÔÚʵÌåµÄÿһ×ֽڱ仯ʱ¶ø±ä»¯£¬¶øÈõÑéÖ¤Æ÷½öÔÚʵÌåµÄÓïÒå±ä»¯Ê±²Å±ä»¯¡£»»ÑÔÖ®£¬ÎÒÃÇÄÜÈÏΪǿÑéÖ¤Æ÷ÊÇÌØ¶¨ÊµÌåµÄ±êʶ£¬¶øÈõÑéÖ¤Æ÷ÊÇͬһÀàÓïÒåµÈ¼ÛʵÌåµÄ±êʶ¡£

×¢: Ç¿ÑéÖ¤Æ÷µÄÀý×Ó£ºÒ»¸öÕûÊýËû»áËæ×Åÿ´ÎʵÌå·¢Éú±ä»¯¶øµÝÔö¡£Ò»¸öʵÌåµÄÐÞ¸Äʱ¼ä£¬Èç¹ûÒÔÃëΪ¾«¶È£¬Äܱ»µ±×÷ÈõÑéÖ¤Æ÷£¬ÒòΪÔÚÒ»ÃëÄÚ×ÊÔ´¿ÉÄܸıäÁ½´Î¡£ÊÇ·ñÖ§³ÖÈõÑéÖ¤Æ÷ÊÇÑ¡ÔñµÄ¡£È»¶ø£¬ÈõÑéÖ¤Æ÷¿ÉÒÔÄܸßЧµÄÈ¥»º´æµÈЧ¶ÔÏó¡£

.

¿Í»§¶Ë²úÉúÇëÇó²¢°ÑÑéÖ¤Æ÷°üº¬ÔÚÒ»¸öÑé֤ͷÓòÀïµÄʱºò»òÔÚ·þÎñÆ÷±È½ÏÁ½¸öÑéÖ¤Æ÷µÄʱºò¾ùÓõ½ÑéÖ¤Æ÷¡£Ç¿ÑéÖ¤Æ÷¿ÉÔÚÈκÎÇé¿öÏÂʹÓ㬶øÈõÑéÖ¤Æ÷½öÔÚ²»ÒÀÀµÑϸñÏàµÈʱ²Å¿ÉÓᣵ±¿Í»§¶Ë²úÉúÌõ¼þGETÇëÇóÀ´ÇëÇóÒ»¸öÍêÕûʵÌåʱ£¬ÈκÎÀàÐ͵ÄÑéÖ¤Æ÷¶¼¿ÉÒÔʹÓá£È»¶ø£¬×Ó·¶Î§£¨sub-range£©ÇëÇóʱֻÄÜʹÓÃÇ¿ÑéÖ¤Æ÷£¬ÒòΪ¿Í»§¶Ë¿ÉÄÜ»áµÃµ½Ò»¸ö²»Ò»ÖµÄʵÌå¡£

¿Í»§¶Ë¿ÉÒÔÔÚ·¢³ö¼òµ¥£¨·Ç×Ó·¶Î§£©GETÇëÇóÀï¼È¿ÉÒÔ°üº¬ÈõÑéÖ¤Æ÷Ò²¿ÉÒÔ°üº¬Ç¿ÑéÖ¤Æ÷¡£¿Í»§¶Ë²»ÄÜÀûÓÃÈõÑéÖ¤Æ÷ÔÚÆäËüµÄÇëÇóÐÎʽÀï¡£

HTTP1.1ЭÒ鶨ÒåÑéÖ¤µÄΨһ¹¦ÄܾÍÊDZȽϡ£ÓÐÁ½ÖÖÑéÖ¤Æ÷µÄ±È½Ï·½·¨£¬ÕâÒÀÀµÓÚÊÇ·ñÄÜÀûÓÃÈõÑéÖ¤Æ÷½øÐбȽϡ£

.

-          Ç¿±È½Ï·½·¨£ºÔÚ¿¼ÂÇÏàµÈµÄÇé¿öÏ£¬Á½ÑéÖ¤Æ÷±ØÐëÍêȫһÖ£¬²¢ÇÒÁ½¸öÑéÖ¤Æ÷¶¼ÊÇÇ¿ÑéÖ¤Æ÷¡£.

-          Èõ±È½Ï·½·¨£ºÔÚ¿¼ÂÇÏàµÈµÄÇé¿öÏ£¬Á½ÑéÖ¤Æ÷±ØÐëÍêȫһÖ£¬µ«ÖÁÉÙÓÐÒ»¸öÑéÖ¤Æ÷¿ÉÄÜÔÚ²»Ó°Ïì½á¹ûµÄÇé¿öϱ»±êÃ÷Ϊ“weak”¡£

ʵÌå±êÇ©ÊÇÇ¿ÑéÖ¤Æ÷³ý·ÇËü±»ÏÔʾµØ±ê¼ÇΪÈõ(weak)µÄ¡£3.11½Ú¸ø³öÁËʵÌå±êÇ©µÄÓï·¨¡£

×îºóÐÞ¸Äʱ¼ä£¨Òë×¢£ºLast-ModifedÍ·ÓòµÄÖµ£©±»ÓÃ×÷ÇëÇóµÄÑéÖ¤Æ÷ʱĬÈÏΪÈõÑéÖ¤Æ÷£¬,³ý·ÇÂú×ãÏÂÁйæÔò²ÅÅж¨ËüÊÇÇ¿ÑéÖ¤Æ÷£º.

-          ÑéÖ¤Æ÷±»Ô´·þÎñÆ÷ÓÃÀ´ºÍµ±Ç°ÊµÌåµÄÑéÖ¤Æ÷½øÐбȽϲ¢ÇÒÔ´·þÎñÆ÷ÖªµÀÏà¹ØµÄʵÌå²»»áÔÚµ±Ç°ÑéÖ¤Æ÷º¯¸ÇµÄÃëÊýÄڸıäÁ½´Î£¬

»òÕß

-          ÑéÖ¤Æ÷¿ÉÄܱ»¿Í»§¶ËÓÃÓÚIf-Modified-Since »òÕß If-Unmodified-SinceÍ·ÓòÀÒòΪ¿Í»§¶ËÓÐÒ»¸ö¹ØÓÚ´ËʵÌåµÄ»º´æÏ²¢ÇÒ

-          »º´æÏî°üº¬Ò»¸öÈÕÆÚÖµ£¬´ËÈÕÆÚÖµ¸ø³öÁËÔ´·þÎñÆ÷·¢ËÍÔ´ÏìÓ¦£¨Òë×¢£ºÔ´·þÎñÆ÷²úÉúµÄÏìÓ¦£©µÄʱ¼ä£¬²¢ÇÒ

-          Last-ModifedÍ·ÓòÖµÖÁÉÙÌáǰÓÚÈÕÆÚÖµ£¨DateÍ·ÓòÖµ£©60Ãë¡£

»òÕß

-          ÑéÖ¤Æ÷ÒѾ­±»Öм仺´æÍ¬´ËʵÌåµÄ»º´æÏîÀïµÄÑéÖ¤Æ÷±È½Ï¹ý £¬²¢ÇÒ

-          »º´æÏî°üº¬ÈÕÆÚÖµ£¨DateÍ·ÓòÖµ£©£¬´ËÈÕÆÚÖµÖ¸Ã÷ÁËÔ´·þÎñÆ÷·¢ËÍÔ´ÏìÓ¦µÄʱ¼ä£¬²¢ÇÒ

-          Last-ModifedÍ·ÓòÖµÖÁÉÙÌáǰÓÚÈÕÆÚÖµ£¨DateÍ·ÓòÖµ£©60Ãë¡£

´ËÖÖ·½·¨ÒÀÀµÓÚÒÔÏÂÊÂʵ£¬Èç¹ûÁ½¸öÏìÓ¦±»·þÎñÆ÷ÔÚͬһÃëÄÚ±»·¢³ö£¬µ«ÕâÁ½¸öÏìÓ¦¶¼ÓÐÏàͬµÄ×îºóÐ޸ģ¨Last-Modified£©Ê±¼ä£¬ÄÇôÖÁÉÙÓÐÒ»¸öÏìÓ¦µÄÈÕÆÚÖµ£¨Òë×¢£ºDateÍ·ÓòµÄÖµ£©ºÍ×îºóÐÞ¸Äʱ¼äÖµ£¨Last-ModifedÍ·ÓòµÄÖµ£©ÊÇÏàµÈµÄ¡£60ÃëµÄÏÞÖÆÄܱ£Ö¤DateºÍLast-ModifedÍ·ÓòµÄÖµÔÚ²»Í¬Ê±¿Ì²úÉú¡£Ò»¸öʵÏÖ¿ÉÄÜ»áÀûÓôóÓÚ60ÃëµÄÖµ£¬Èç¹ûËüÈÏΪ60ÃëÌ«¶Ì¡£

Èç¹û¿Í»§¶ËÏ£ÍûÖ´ÐÐ×Ó·¶Î§(sub-range)ÇëÇóÀ´ÇëÇóÒ»¸öÖ»ÓÐ×îºóÐ޸ģ¨Last-Modifed£©Ê±¼äºÍ¶øÃ»ÓÐ͸Ã÷ÑéÖ¤Æ÷µÄֵʱ£¬Ëü¿ÉÄÜ»áÈÏΪֻÓÐ×îºóÐ޸ģ¨Last-Modified£©Ê±¼äÊÇÇ¿µÄ¡£

Èô»º´æ»òÔ´·þÎñÆ÷ÊÕµ½Ò»¸öÌõ¼þÇëÇ󣬶ø²»Êǵõ½ÍêÕûÏìÓ¦µÄGETÇëÇóʱ£¬Ëû±ØÐëʹÓÃÇ¿±È½Ï·½·¨È¥¼ÆËã´ËÌõ¼þ¡£

´Ë¹æ¶¨ÔÊÐíHTTP1.1µÄ,»º´æºÍ¿Í»§¶Ë°²È«µØÖ´ÐÐ×Ó·¶Î§£¨sub-range£©ÇëÇóÀ´ÇëÇó´ÓHTTP/1.0µÃÀ´µÄÖµ¡£

13.3.4 ¹ØÓÚºÎʱʹÓÃʵÌå±êÇ©ºÍ×îºóÐÞ¸Äʱ¼äµÄ¹æÔò
ÎÒÃǶÔÔ´·þÎñÆ÷£¬¿Í»§¶ËºÍ»º´æ²ÉÓÃÒ»Ì×¹æÔòºÍ½¨ÒéÀ´¹æ¶¨²»Í¬µÄÑéÖ¤Æ÷ºÎʱӦ¸Ã±»Ê¹Ó㬳ö

ÓÚºÎÖÖÄ¿µÄ±»Ê¹Óá£

HTTP/1.1 Ô´·þÎñÆ÷£º

-          Ó¦¸Ã·¢ËÍÒ»¸öʵÌå±êÇ©ÑéÖ¤Æ÷³ý·ÇÔ´·þÎñÆ÷²úÉúÕâÑùÒ»¸öʵÌå±êÇ©²»¿ÉÐС£

-          ¿ÉÄܻᷢËÍÈõʵÌå±êÇ©¶ø²»ÊÇǿʵÌå±êÇ©£¬Èç¹ûʹÓÃÈõʵÌå±êÇ©ÄÜÌá¸ßÐÔÄܵϰ»òÕßÈç¹û·¢ËÍÒ»¸öǿʵÌå±êÇ©²»¿ÉÐеÄÇé¿öÏ¡£

-          Ó¦¸Ã·¢ËÍÒ»¸öLast-ModifedÖµÈç¹û¿ÉÐеϰ£¬³ý·Ç´òÆÆÓïÒå͸Ã÷ÐÔ£¨Õâ¿ÉÄÜÓÉÀûÓÃIf-Modified-SinceÍ·ÓòÀïµÄÈÕÆÚ²úÉú£©¿ÉÄܻᵼÖÂÑÏÖØµÄºó¹û¡£

»»¾ä»°Ëµ£¬¶ÔHTTP1.1Ô´·þÎñÆ÷À´Ëµ£¬±È½ÏºÃµÄ×ö·¨ÊÇͬʱ·¢ËÍǿʵÌå±êÇ©ºÍLast-ModifiedÖµ¡£.

ΪÁ˺Ϸ¨£¬Ç¿ÊµÌå±êÇ©±ØÐëËæÏà¹ØÁªµÄʵÌåÖµ¸Ä±ä¶ø¸Ä±ä¡£ÈõʵÌå±êǩӦ¸ÃËæÏà¹ØÁªµÄʵÌåÔÚÓïÒåÉÏ·¢Éú¸Ä±ä¶ø¸Ä±ä¡£

×¢Ò⣺Ϊ±£Ö¤ÓïÒå͸Ã÷»º´æ£¬Ô´·þÎñÆ÷±ØÐë±ÜÃâΪÁ½¸ö²»Í¬µÄʵÌåÖØ¸´ÀûÓÃÒ»¸öÌØ¶¨µÄǿʵÌå±êǩֵ¡£»º´æÏîÓ¦¸ÃÄܱ£³ÖÈÎÒⳤµÄʱ¼ä£¬¶ø²»¹Ü¹ýÆÚʱ¼ä£¨expiraton time£©£¬ËùÒÔ»º´æ¿ÉÄÜ»áÔÙÈ¥³¢ÊÔÈ¥ÀûÓÃÔÚ¹ýȥijһʱ¿Ì»ñµÃµÄÑéÖ¤Æ÷È¥ÑéÖ¤»º´æÏî¡£

HTTP/1.1 ¿Í»§¶Ë£º

- ÈôʵÌå±êÇ©±»Ô´·þÎñÆ÷Ìṩ£¬HTTP/1.1¿Í»§¶Ë±ØÐëÔÚÈκλº´æÌõ¼þÇëÇó£¨ÀûÓÃÁËIf-Match»òIf-None-MatchµÄÇëÇó£©ÀïÀûÓÃʵÌå±êÇ©.¡£

- ½öµ±Last-ModifiedÖµ±»Ô´·þÎñÆ÷Ìṩʱ£¬HTTP/1.1¿Í»§¶ËÓ¦¸ÃÔÚ·Ç×Ó·¶Î§»º´æÌõ¼þÇëÇó£¨ÀûÓÃIf-Modified-Since£©ÀïÀûÓôËÖµ¡£

- ½öµ±Last-ModifiedÖµ±»HTTP/1.0Ô´·þÎñÆ÷Ìṩ£¬HTTP/1.1¿Í»§¶Ë¿ÉÄÜ»áÔÚ×Ó·¶Î§»º´æÌõ¼þÇëÇó£¨ÀûÓÃÁËIf-Unmodified-Since£©ÀïÀûÓôËÖµ¡£

- Èç¹ûÒ»¸öʵÌå±êÇ©ºÍLast-ModifiedÖµ±»Ô´·þÎñÆ÷Ìá¸ß£¬HTTP/1.1¿Í»§¶ËÓ¦¸ÃÔÚ»º´æÌõ¼þÇëÇóÀïÀûÓÃÕâÁ½¸öÑéÖ¤Æ÷¡£ÕâÔÊÐíHTTP/1.1ºÍHTTP/1.1»º´æÄܺÏÊʵؽøÐÐÏìÓ¦¡£

HTTP/1.1Ô´·þÎñÆ÷£¬µ±½ÓÊÕµ½Ò»¸öÌõ¼þÇëÇó²¢ÇÒ´ËÇëÇóͬʱ°üº¬Last-ModifedÈÕÆÚ£¨ÀýÈ磬ÔÚIf-Modified-Since£¬»òIf-Unmodified-SinceÍ·ÓòÀºÍÒ»¸ö»ò¶à¸öʵÌå±êÇ©£¨ÀýÈçÔÚIf-Match£¬If-None=Match£¬»òIf-RangeÍ·ÓòÀ×÷Ϊ»º´æÑéÖ¤Æ÷ʱ£¬Ô´·þÎñÆ÷²»ÄÜ·µ»ØÒ»¸ö304״̬ÏìÓ¦£¨Not Modified£©³ý·ÇÕâÑù×öÄܵ±µ±Ç°ÊµÌåµÄÑéÖ¤Æ÷ºÍÇëÇóÀïËùÓеÄÌõ¼þÍ·ÓòÀïµÄÑéÖ¤Æ÷Ò»Ö¡£

HTTP/1.1»º´æ·þÎñÆ÷£¬µ±½ÓÊÕµ½Ò»¸öÌõ¼þÇëÇó²¢ÇÒ´ËÇëÇóÀïͬʱ°üº¬Last-ModifiedÈÕÆÚºÍÒ»¸ö»ò¶à¸öʵÌå±êÇ©×÷Ϊ»º´æÑéÖ¤Æ÷ʱ£¬Ëü²»ÄÜ·µ»ØÒ»¸ö±¾µØµÄ¸±±¾¸ø¿Í»§¶Ë³ý·ÇÄǸö¸±±¾µÄÑéÖ¤Æ÷ºÍËùÓÐÇëÇóÀïÌõ¼þÍ·ÓòÀïµÄÑéÖ¤Æ÷Ò»Ö¡£

×¢Ò⣺ÕâЩ¹æÔò±³µÄ³£ÓõÄÔ­ÔòÊÇHTTP/1.1·þÎñÆ÷ºÍ¿Í»§¶ËÓ¦¸ÃÔÚÇëÇóºÍÏìÓ¦Àᄀ¿ÉÄÜ´«Êä·ÇÈßÓàµÄÐÅÏ¢¡£½ÓÊÕÕâЩ·ÇÈßÓàÐÅÏ¢µÄHTTP/1.1ϵͳ½«»á¼ÙÉèËü½ÓÊÕÁËÑéÖ¤Æ÷¡£

HTTP/1.0¿Í»§¶ËºÍ»º´æ½«»áºöÂÔʵÌå±êÇ©¡£Í¨³££¬Last-ModifiedÖµ±»ÕâЩϵͳ½ÓÊպ󽫻ᱣ֤͸Ã÷ºÍ¸ßЧµÄ»º´æÐÐΪ£¬ËùÒÔHTTP/1.1Ô´·þÎñÆ÷Õâʱ½«»áÌṩLast-ModifiedÖµ¡£ÔÚÕâЩÇé¿öÏ£¬µ±HTTP/1.0ϵͳÀûÓÃÒ»¸öLast-ModifiedÖµ×÷Ϊһ¸öÑéÖ¤Æ÷¿ÉÄÜ»á´øÀ´ÑÏÖØµÄºó¹ûʱ£¬HTTP/1.1·þÎñÆ÷½«²»»áÌṩLast-ModifiedÖµ¡£

13.3.5·ÇÑéÖ¤Ìõ¼þ£¨Non-validating Conditionls£©
ʵÌå±êÇ©±³ºóµÄÔ­ÔòÊÇÖ»ÓзþÎñµÄ×÷Õß²ÅÖªµÀ×ÊÔ´µÄÓïÒå¶øÈ¥Ñ¡ÔñÒ»¸öºÏÊʵĻº´æÑéÖ¤»úÖÆ£¬²¢ÇÒÈκÎÑéÖ¤Æ÷±È½Ï·½·¨µÄ±ê×¼¶¼¿ÉÄÜ»á´øÀ´·çÏÕ¡£ËùÒÔ£¬ÈÎºÎÆäËûµÄÍ·ÓòµÄ±È½Ï£¨³ýÁËLast-Modified£¬ÎªÁ˼æÈÝHTTP/1.0£©´ÓÀ´²»»á±»ÓÃÓÚÑéÖ¤»º´æÏî¡£

13.4 ÏìÓ¦µÄ¿É»º´æÐÔ£¨Response Cacheability£©
³ý·Ç±»»º´æ¿ØÖÆ£¨¼û14.9½Ú£©Ö¸ÁîÃ÷È·µØÏÞÖÆ£¬»º´æÏµÍ³¿ÉÒÔ½«Ò»³É¹¦µÄÏìÓ¦×÷Ϊ»º´æÏ¿ÉÒÔ·µ»Ø»º´æÏîÀïµÄÏìÓ¦¸±±¾¶ø²»ÐèÒªÑéÖ¤ËüÈç¹û´Ë¸±±¾ÊDZ£Ïʵ쬲¢ÇÒÒ²¿ÉÒÔÔÚÑéÖ¤³É¹¦ºó·µ»ØËü¡£Èç¹û¼ÈûÓкÍÏìÓ¦Ïà¹ØµÄ»º´æÑéÖ¤Æ÷ҲûÓкÍÏìÓ¦Ïà¹ØµÄÏÔʾ¹ýÆÚʱ¼ä£¨explicit expiration time£¬Òë×¢£º¼û13.3.1½ÚÀï¹ØÓÚʲôÊÇÏÔʾ¹ýÆÚʱ¼äµÄ˵Ã÷£©£¬ÎÒÃDz»»áÈÏΪËüÊǿɻº´æµÄ£¬µ«ÊÇijЩ»º´æ¿ÉÄÜ»áÎ¥·´Õâ¸öÆÚÍû£¨ÀýÈ磬µ±²»ÄܽøÐÐÍøÂçÁ¬½Óʱ£©¡£¿Í»§¶ËÄܾ­³£·¢ÏÖ´Ó»º´æÀï»ñµÃµÄÏìÓ¦£¬Ö»ÐèҪͨ¹ý°ÑDateÍ·Óòֵͬµ±Ç°Ê±¼ä×÷±È½Ï¡£

×¢Ò⣺ijЩHTTP1.0»º´æ¿ÉÄÜÎ¥·´ÕâÒ»ÆÚÍû¶ø²»Ìáʾ¾¯¸æ¡£

»¹ÓÐ,ijЩÇé¿öÏ¿ÉÄܲ»±ã±£ÁôһʵÌå,»ò½«Æä·µ»Ø¸øºóÐøÇëÇó.

È»¶ø£¬ÔÚһЩÇé¿öÏ£¬»º´æ²»Êʺϱ£´æÒ»¸öʵÌ壬»òÕß²»ÊʺϰÑËü·ÅÓÚºóÐøÇëÇóµÄÏìÓ¦Àï¡£Õâ¿ÉÄÜÒòΪ·þÎñ×÷ÕßÈÏΪÍêÈ«ÓïÒå͸Ã÷ÐÔÊÇÓбØÒªµÄ£¬»ò×ÅÒòΪ°²È«ºÍÒþ˽µÄ¿¼ÂÇ¡£Ä³Ð©»º´æ¿ØÖÆÖ¸ÁîÊÇΪÁËÈ÷þÎñÆ÷ÄÜÖ¸Ã÷ijЩ×ÊԴʵÌå»òÆäÖеÄÒ»²¿·Ö²»Äܱ»»º´æ¡£

×¢ÒâÔÚ14.8½ÚÀïÃèÊöÁË·ÀÖ¹Ò»¸ö¹²Ïí»º´æÈ¥±£´æºÍ·µ»ØÒ»¸öÒÔǰÇëÇóµÄÏìÓ¦£¬Èç¹ûÄǸöÇëÇó°üº¬Ò»¸öAuthorizationÍ·Óò¡£

³ý·Ç»º´æ¿ØÖÆÖ¸Áî·ÀÖ¹´ËÏìÓ¦±»»º´æ£¬Ò»¸ö½ÓÊÕµÄÏìÓ¦Èç¹ûËüµÄ״̬ÂëÊÇ200£¬203£¬206£¬300£¬301»ò410£¬ÄÇô´ËÏìÓ¦Ó¦¸Ã±»»º´æ±£´æ¶øÇÒ¿ÉÓÃÓÚºóÐøµÄÇëÇ󣬵«Õâ±ØÐëÊÜÏÞÓÚ¹ýÆÚ»úÖÆ£¨expiration mechanism£©¡£È»¶ø£¬»º´æÈç¹û²»Ö§³ÖRangeºÍContent-RangeÍ·Óò£¬ÄÇôËü²»ÄÜ»º´æ206ÏìÓ¦£¨²¿·ÖÄÚÈÝ£©ÏìÓ¦¡£

½ÓÊÕµ½µÄÏìÓ¦Èç¹ûÊÇÆäËûµÄ״̬Â루È磬302ºÍ307£©£¬ÄÇô´ËÏìÓ¦²»Äܱ»ÓÃÓÚ·þÎñÓÚºóÐøµÄÇëÇ󣬳ý·Ç»º´æ¿ØÖÆÖ¸Áî»òÆäËûµÄÍ·ÓòÃ÷È·µØÔÊÐíËüÄÜÕâÑù×ö¡£ÀýÈ磬ÕâЩͷÓò°üº¬ÏÂÃæµÄÍ·Óò£ºExpiresÍ·Óò£¨¼û14.21£©£»“max-age”£¬“s-maxage”£¬“must-revalidate”£¬“prox-revalidate”£¬“public”»ò“private”»º´æ¿ØÖÆÖ¸Á¼û14.9£©¡£

13.5 ´Ó»º´æÀï¹¹ÔìÏìÓ¦
»º´æµÄÄ¿µÄÊÇ´æ´¢ÇëÇóµÄÏìÓ¦ÐÅÏ¢£¬ÎªÁËÏìÓ¦½«À´µÄÇëÇó¡£ÔںܶàÇé¿öÏ£¬»º´æÄÜ·µ»ØÏìÓ¦µÄºÏÊʲ¿·Ö¸øÇëÇóÕß¡£È»¶ø£¬Èç¹û»º´æÓµÓÐÒ»¸ö»ùÓÚÒÔǰÏìÓ¦µÄ»º´æÏËü¿ÉÄܱØÐë°ÑÐÂÏìÓ¦µÄ²¿·ÖºÍËü»º´æÏîÀïµÄÄÚÈÝºÏÆðÀ´¡£

13.5.1End-to-endºÍHop-by-hopÍ·Óò
Ϊ¶¨Ò建´æºÍ·Ç»º´æ´úÀí·þÎñÆ÷µÄÐÐΪ£¬ÎÒÃǽ«HTTPÍ·Óò·Ö³ÉÁ½Àࣺ

-          end-to-endÍ·Óò£¬ËûÃDZ»´«Ê䏸×îÖÕÇëÇó»òÏìÓ¦µÄ½ÓÊÕÕß¡£ÏìÓ¦Àïend-to-endÍ·Óò±ØÐè×÷Ϊ»º´æÏîµÄÒ»²¿·Ö´æ´¢£¬²¢ÇÒ±ØÐëÔÚ´Ó»º´æÏîÐγɵÄÏìÓ¦Àï´«Êä¡£

-          hop-by-hopÍ·Óò£¬ËûÃDZ»Ö»¶Ô´«Êä²ãÉϵÄÁ¬½ÓÓÐÒâÒ壬²¢ÇÒ²»Äܱ»»º´æ±£´æ»ò±»´úÀíת·¢¡£

ÏÂÃæµÄHTTP/1.1Í·ÓòÊÇhop-by-hopÍ·Óò£º

-          Connection

-          Keep-Alive

-          Proxy-Authenticate

-          Proxy-Authorization

-          TE

-          Trailers

-          Transfer-Encoding

-          Upgrade

ËùÓÐÆäËû±»HTTP/1.1¶¨ÒåµÄÍ·Óò¾ùΪend-to-endÍ·Óò¡£

13.5.2²»¿É¸ü¸ÄµÄÍ·Óò £¨Non-modifiable Headers£©
HTTP1.1µÄÄ³Ð©ÌØÕ÷£¬ÈçÊý×ÖÈÏÖ¤£¬»ùÓÚijһЩend-to-endÍ·Óò¡£Ò»¸ö͸Ã÷´úÀí²»Ó¦¸Ã¸Ä±äend-to-endÍ·Óò£¬³ý·ÇÕâЩͷÓòµÄ¶¨ÒåÒªÇó»òÔÊÐíËüÕâÑù×ö¡£

Ò»¸ö͸Ã÷´úÀí£¨Òë×¢£º´úÀíÒ»°ãÊÇ»º´æ£¬»º´æ¿ÉÒԽлº´æ´úÀí£¬»º´æ·þÎñÆ÷£¬´úÀí·þÎñÆ÷£©²»ÄܸıäÇëÇó»òÏìÓ¦ÀïµÄÏÂÃæµÄÍ·Óò£¬¶øÇÒËü²»ÄÜÌí¼ÓÕâЩͷÓòµ½Ã»ÓÐÕâЩͷÓòµÄÇëÇó»òÏìÓ¦À

-          Contents-location

-          Content-MD5

-          ETag

-          Last-Modified

Ò»¸ö͸Ã÷´úÀí²»ÄܸıäÏìÓ¦ÀïÏÂÃæµÄµÄÍ·Óò£º

- Expires

µ«Ëü¿ÉÒÔÌí¼ÓÕâЩͷÓòÈç¹ûÏìÓ¦ÀïûÓÐÕâЩͷÓòµÄʱºò¡£Èç¹ûÒ»¸öExpiresÍ·Óò±»Ìí¼Ó£¬Ëü±ØÐëµÈÓÚÏìÓ¦ÀïDateÍ·ÓòµÄÖµ¡£

Ò»¸ö´úÀí£¨Òë×¢£º»º´æ¾ÍÊÇÒ»¸ö´úÀí£¬ÎÒÃÇÒ»°ã³Æ×ö»º´æ´úÀí£¬»ò»º´æ·þÎñÆ÷£¬»ò»º´æ´úÀí·þÎñÆ÷£¬¶¼ÊÇÒ»¸öÒâ˼£©²»ÄÜÔÚÏûÏ¢Öиıä»òÌí¼ÓÏÂÃæµÄÍ·ÓòÈç¹û´ËÏûÏ¢°üº¬no-transform»º´æ¿ØÖÆÖ¸Á»òÔÚÈκÎÇëÇóÀïÒ²²»ÄÜÌí¼Ó»ò¸Ä±äÕâЩͷÓò¡£

-          Content-Encoding

-          Content-Range

-          Content-Type

Ò»¸ö·Ç͸Ã÷´úÀí¿ÉÄÜ»á¸Ä±ä»òÌí¼ÓÕâЩͷÓò¸øÒ»¸öÏûÏ¢Èç¹û´ËÏûÏ¢²»°üº¬no-transform»º´æ¿ØÖÆÖ¸Áµ«ÊÇÈç¹û´úÀíÕâÑù×öÁË£¬Ëü±ØÐëÌí¼ÓÒ»¸ö¾¯¸æ214£¨×ª»»±»Ó¦Óã©£¨¼û14.46½Ú£©¡£

¾¯¸æ£ºend-to-endÍ·ÓòµÄ²»±ØÒªµÄ¸Ä±ä¿ÉÄܻᵼÖÂÈÏÖ¤»úµÄʧ°ÜÈç¹û¸üÇ¿µÄÈÏÖ¤»úÖÆ±»Ó¦ÓÃÓÚºóÐøµÄHTTP°æ±¾ÖС£´ËÈÏÖ¤»úÖÆ¿ÉÄÜÒÀÀµÓÚûÓÐÔڴ˳öÏÖµÄÍ·ÓòÖµ¡£

ÇëÇó»òÏìÓ¦ÀïµÄContent-LengthÍ·Óò±»Ìí¼Ó»ò±»É¾³ý»á¸ù¾Ý4.4½ÚµÄ¹æÔò¡£Ò»¸ö͸Ã÷´úÀí±ØÐë±£ÁôʵÌåÖ÷ÌåµÄentity-length£¨¼û7.2.2£©£¬¾¡¹ÜËü¿ÉÒÔ¿ÉÄܸıätransfer-length£¨4.4½Ú£©¡£

13.5.3ÁªºÏÍ·Óò£¨Combining Headers£©
µ±Ò»¸ö»º´æ¶Ô·þÎñÆ÷·¢³öÑéÖ¤ÇëÇóʱ£¬¶øÇÒ·þÎñÆ÷Ìṩ304£¨Ã»Óиı䣩ÏìÓ¦»ò206£¨²¿·ÖÄÚÈÝ£©ÏìӦʱ£¬ÄÇô»º´æ½«¹¹ÔìÒ»¸öÏìÓ¦·¢Ë͸øÇëÇó¿Í»§¶Ë¡£

Èç¹û״̬ÂëÊÇ304£¨Ã»Óиı䣩£¬»º´æÀûÓûº´æÏîÀïµÄʵÌåÖ÷Ì壨entity-body£©×÷Ϊ¿Í»§¶ËÇëÇóÏìÓ¦µÄʵÌåÖ÷Ìå¡£Èç¹ûÏìӦ״̬ÂëÊÇ206£¨²¿·ÖÄÚÈÝ£©²¢ÇÒEtag»òLast-ModifiedÍ·ÓòÄܾ«È·Æ¥Å䣬ÄÇô»º´æ¿ÉÄܰѴæÈ뻺´æÏîÀïµÄÄÚÈݺͽÓÊÕµ½µÄÏìÓ¦ÀïµÄÐÂÄÚÈݺϲ¢²¢ÇÒÀûÓÃ×îºóºÏ²¢µÄ½á¹û×÷ΪÊä³öÏìÓ¦£¨¼û13.5.4£©¡£

´æ´¢ÓÚ»º´æÏîÀï¶Ëend-to-endÍ·Óò±»ÓÃÓÚ¹¹ÔìÏìÓ¦£¬³ýÁË£º

-          Èκδ洢µÄ¾¯¸æÂëÊÇ1xx£¨¼û14.46£©WarningÍ·Óò±ØÐë´Ó»º´æÏîºÍת·¢µÄÏìÓ¦Àïɾ³ý¡£

-          Èκδ洢µÄ¾¯¸æÂëÊÇ2xxµÄWarningÍ·Óò±ØÐëÒªÔÚ»º´æÏîºÍת·¢µÄÏìÓ¦Àï±£Áô¡£

-          ÈκÎÔÚ304»ò206ÏìÓ¦ÀïµÄend-to-endÍ·Óò±ØÐëÌæ»»»º´æÏîÀïÏàÓ¦µÄÍ·Óò

³ý·Ç»º´æ¾ö¶¨È¥É¾³ý»º´æÏ·ñÔòËü±ØÐëÕÕÑùÄÜÓýÓÊÕµÄÏìÓ¦ÀïµÄÏàÓ¦µÄend-to-endÍ·ÓòÈ¥Ìæ»»´æ´¢ÔÚ»º´æÏîÀïµÄÍ·Óò£¬³ýÁËÉÏÃæÃèÊöµÄWarningÍ·Óò¡£Èç¹ûÊäÈëÏìÓ¦ÀïµÄÒ»¸öÍ·ÓòÆ¥Å仺´æÏîÀï¶à¸öÍ·Óò£¬ÄÇôËùÓÐÕâЩ¾ÉµÄÍ·Óò±ØÐë±»Ìæ»»¡£

´ÓÁíÒ»·½ÃæËµ£¬ÊäÈëÏìÓ¦µÄËùÓÐend-to-endÍ·Óò»á¸²¸Ç»º´æÏîÀïËùÓÐÏàÓ¦µÄend-to-endÍ·Óò£¨³ýÁË»º´æµÄ¾¯¸æÂëÊÇ1xxµÄWarningÍ·Óò£¬Ëü½«»á±»É¾³ý¼´Ê¹Ã»Óб»¸²¸Ç£©¡£

×¢Ò⣺´Ë¹æÔòÔÊÐíÔ´·þÎñÆ÷È¥ÀûÓÃ304£¨Ã»Óиı䣩»òÒ»¸ö206£¨²¿·ÖÄÚÈÝ£©ÏìӦȥ¸üÐÂÈκÎͬһʵÌå»òʵÌåµÄ×Ó·¶Î§µÄÒÔǰÏìÓ¦µÄÍ·Óò£¬ËäÈ»Ëü¿ÉÄÜûÓÐÒâÒå»òÕâÑù×ö²»ÕýÈ·¡£ÕâÌõ¹æÔò²»ÔÊÐíÔ´·þÎñÆ÷È¥ÀûÓÃ304£¨Ã»Óиı䣩»ò206£¨²¿·ÖÄÚÈÝ£©ÏìӦȥÍêÈ«µØÉ¾³ýÒ»¸öÒÔǰÏìÓ¦µÄÍ·Óò¡£

13.5.4ÁªºÏ×Ö½Ú·¶Î§£¨Combing Byte Ranges£©
Ò»ÌõÏìÓ¦¿ÉÄܽö´«ËÍÒ»¸öʵÌåÖ÷ÌåµÄijһ²¿·Ö£¬ÕâÊÇÓÉÓÚÇëÇó°üº¬Ò»¸ö»ò¶à¸öRangeÖ¸¶¨µÄ·¶Î§£¬»òÕßÓÉÓÚÁ¬½Ó»á±»¹ýÔçµØ¶Ï¿ª¡£ÔÚ¼¸´ÎÕâÑùµÃ´«Êäºó£¬»º´æ¿ÉÄÜÒѾ­½ÓÊÕÁËͬһ¸öʵÌåÖ÷ÌåµÄ¶à¸ö·¶Î§²¿·Ö¡£

Èç¹û»º´æÓÐÒ»¸öʵÌåµÄ·Ç¿Õ×Ó·¶Î§£¬²¢ÇÒÒ»¸öÊäÈ루incoming£©ÏìÓ¦£¨Òë×¢£ºÊäÈëÏìÓ¦ÊǽøÈ뻺´æµÄÏìÓ¦£¬Êä³öÏìÓ¦ÊÇ´Ó»º´æ³öÈ¥µÄÏìÓ¦£©Ð¯´øÁËÁíÒ»¸ö×Ó·¶Î§£¬ÄÇô»º´æ¿ÉÄÜ»á°ÑеÄ×Ó·¶Î§ºÍÒѾ­´æÔÚµÄ×Ó·¶Î§ÁªºÏÆðÀ´Èç¹ûÁ½Õß×ñÑ­ÏÂÃæµÄ¹æÔò£º

-          ÊäÈëÏìÓ¦ºÍ»º´æÏî¶¼Óлº´æÑéÖ¤Æ÷¡£

-          µ±ÀûÓÃÇ¿±È½Ï·½·¨µÄʱºò£¬Á½¸ö»º´æÑéÖ¤Æ÷ÍêȫƥÅ䣨¼û13.3.3£©¡£

Èç¹ûÈκÎÒ»¸öÒªÇó²»ÄÜÂú×㣬»º´æ±ØÐëÀûÓÃ×î½üµÄ²¿·ÖÏìÓ¦£¨Õâ»ùÓÚÈκÎÏìÓ¦µÄDateÍ·ÓòÖµ£¬²¢ÇÒ»áÀûÓÃÊäÈëÏìÓ¦Èç¹ûÕâЩDateÍ·ÓòÖµÏàµÈ»ò¶ªÊ§ÁË£©£¬¶øÇÒ±ØÐ붪ÆúÆäËûµÄ²¿·ÖÐÅÏ¢¡£

13.6 »º´æÒѾ­Ð­É̹ýµÄÏìÓ¦£¨Caching Negotiated Responses£©
ÔÚVaryÍ·Óò³öÏÖÔÚÏìÓ¦ÀïµÄʱºò£¬·þÎñÆ÷Çý¶¯ÄÚÈÝЭÉÌ£¨12.1½Ú£©µÄʹÓûá¸Ä±ä»º´æÀûÓÃÏìӦȥÏìÓ¦ºóÐøÇëÇóÀûÓõÄÌõ¼þºÍ¹ý³Ì¡£¼û14.44½Ú¹ØÓÚ·þÎñÆ÷ÀûÓÃVaryÍ·ÓòµÄÃèÊö¡£

·þÎñÆ÷Ó¦¸ÃÀûÓÃVaryÍ·Óòȥ֪ͨһ¸ö»º´æÊ²Ã´ÑùµÄÇëÇóÍ·ÓòÓ¦¸Ã±»Ê¹ÓôӶø´ÓÒ»¸ö¿É»º´æµÄ²¢ÊÜÏÞÓÚ·þÎñÆ÷Çý¶¯Ð­É̵ÄÏìÓ¦µÄ¶à¸ö±íÏÖÐÎʽÖÐÑ¡ÔñºÏÊʵıíÏÖÐÎʽ¡£VaryÍ·ÓòÀïÖ¸¶¨µÄÍ·Óò±»³Æ×öÑ¡ÔñÇëÇóÍ·Óò£¨selecting request-header£©¡£

µ±»º´æ½ÓÊÕµ½Ò»¸öºóÐøµÄÇëÇ󣬴ËÇëÇóµÄURI¶ÔÓ¦Ò»¸ö»ò¶à¸ö°üº¬ÁËVaryÍ·ÓòµÄ»º´æÏîʱ£¬´Ë»º´æ²»ÄÜÀûÓÃÕâÑùÒ»¸ö»º´æÏîÈ¥¹¹Ôì³öÒ»¸öÏìӦȥ·þÎñÓÚÐÂÀ´µÄÇëÇ󣬳ý·ÇËùÓгöÏÖÔÚÐÂÇëÇóÀïµÄÑ¡ÔñÇëÇóÍ·ÓòÆ¥Åä´æ´¢ÔÚÔ´ÇëÇóÀï±»´æ´¢µÄÇëÇóÍ·Óò¡£

ÔÚÁ½¸öÇëÇóÀÎÒÃǶ¨ÒåÕâÁ½¸öÑ¡ÔñÇëÇóÍ·ÓòÆ¥Å䣬Èç¹û²¢ÇÒÖ»ÓеÚÒ»¸öÇëÇóµÄÑ¡ÔñÇëÇóÍ·ÓòÄܱ»×ª»»ÎªµÚ¶þ¸öÇëÇóÀïµÄÍ·Óòͨ¹ýÌí¼Ó»òɾ³ýÏßÐÔ¿Õ°×£¨±»ÔÊÐí³öÏÖÔÚÏàÓ¦µÄBNFÀïµÄÏßÐÔ¿Õ°×£©ºÍ/»ò°Ñ¶à¸öÏûϢͷÓò½áºÏ³ÉÒ»¸öÍ·Óòͨ¹ý4.2½ÚÀïµÄ¹æÔò¡£

Ò»¸öVaryÍ·ÓòÖµÊÇ“*”×ÜÊDz»ÄÜÆ¥ÅäµÄ£¬²¢ÇÒºóÐøÄǸö×ÊÔ´µÄÇëÇóÖ»ÄܺÏÊʵر»Ô´·þÎñÆ÷½âÎö¡£

Èç¹û»º´æÏîÀïµÄÑ¡ÔñÇëÇóÍ·Óò£¨selecting request-header£©²»ÄÜÆ¥ÅäÐÂÇëÇóµÄÑ¡ÔñÇëÇóÍ·Óò£¬ÄÇô»º´æ²»ÄÜÀûÓûº´æÏîÈ¥Âú×ãÇëÇó³ý·ÇËüÄÜÒÔÒ»¸öÌõ¼þÇëÇó°Ñ´ËÐÂÇëÇó½ÓÁ¦µ½Ô´·þÎñÆ÷²¢ÇÒ´ËÔ´·þÎñÆ÷ÒÔÒ»¸ö304£¨Ã»Óиı䣩µÄ״̬Âë½øÐÐÏìÓ¦²¢°üº¬Ò»¸öʵÌå±êÇ©»òÕßContent-LocationÍ·ÓòÖ¸Ã÷½«Òª±»Ê¹ÓõÄʵÌå¡£

Èç¹ûÒ»¸öʵÌå±êÇ©±»¸³ÓèÒ»¸ö»º´æµÄ±íÏÖÐÎʽ£¬ÄÇô´Ëת·¢µÄÇëÇó½«ÊÇÌõ¼þµÄ²¢ÇÒËùÓÐÄǸö×ÊÔ´µÄ»º´æÏîµÄʵÌå±êÇ©½«»á±»°üº¬ÓÚIf-None-MatchÍ·ÓòÀï¡£ÕâÏò·þÎñÆ÷±í´ïµ±Ç°»º´æÓµÓеÄʵÌ弯£¬ÒÔÖÁÓÚÈç¹ûÕâЩʵÌåÀïµÄÈκÎʵÌ寥ÅäÇëÇóµÄʵÌ壬·þÎñÆ÷»áÀûÓÃEtagÍ·ÓòÔÚ304£¨Ã»Óиı䣩ÏìÓ¦ÀïÈ¥¸æËß»º´æÄĸö»º´æÏîÊǺÏÊʵġ£Èç¹ûÐÂÏìÓ¦µÄʵÌå±êǩƥÅäÒѾ­´æÔڵĻº´æÏÄÇôÐÂÏìÓ¦Ó¦¸Ã±»ÀûÓÃÈ¥¸üÐÂÒѾ­´æÔڵĻº´æÏîµÄÍ·Óò£¬¶øÇҴ˽á¹û±ØÐë·µ»Ø¸ø¿Í»§¶Ë¡£

Èç¹ûÈκÎÒѾ­´æÔڵĻº´æÏî°üº¬Ö»ÓÐÏà¹ØÊµÌåµÄ²¿·ÖÄÚÈÝ£¬ÄÇô´ËʵÌåµÄʵÌå±êÇ©²»Ó¦¸Ã±»°üº¬ÔÚIf-None-MatchÍ·ÓòÀï³ý·ÇÕâ¸öÇëÇóÊÇΪÁËÇëÇóʵÌåµÄÒ»¸ö·¶Î§£¬´Ë·¶Î§ÍêÈ«¿ÉÒÔ±»»º´æÏîÂú×ã¡£

Èç¹û»º´æ½ÓÊÕµ½Ò»¸ö³É¹¦µÄÏìÓ¦£¬´ËÏìÓ¦µÄContent-LocationÍ·ÓòÆ¥ÅäÓÚÒѾ­´æÔڵĻº´æÏîµÄContent-LocationÍ·Óò¶ÔͬһÇëÇóURIÀ´Ëµ£¬²¢ÇÒ´ËÏìÓ¦µÄʵÌå±êÇ©²»Í¬ÓÚÒѾ­´æÔڵĻº´æÏîµÄʵÌå±êÇ©£¬¶øÇÒ´ËÏìÓ¦µÄDateÍ·ÓòÖµ±ÈÒѾ­´æÔڵĻº´æÏî¸ü½ü£¬ÄÇôÒѾ­´æÔڵĻº´æÏî²»Äܱ»·µ»ØÈ¥ÏìÓ¦½«À´µÄÇëÇó²¢ÇÒ½«»á´Ó»º´æÀïɾ³ý¡£

13.7 ¹²ÏíºÍ·Ç¹²Ïí»º´æ £¨Shared and Non-Shared Caches£©
³öÓÚ°²È«ºÍ±£ÃÜ¿¼ÂÇ£¬ÓбØÒªÇø·Ö¹²ÏíºÍ·Ç¹²Ïí»º´æ¡£·Ç¹²Ïí»º´æÊǽö¹©Ò»¸öÓû§Ê¹ÓõĻº´æ£¬´ËÖÖÇé¿öÏ£¬¿ÉÓÃÐÔÓÉÊʵ±µÄ°²È«»úÖÆ¿ØÖÆ¡£ËùÓÐÆäËüµÄ»º´æ¾ù±»ÈÏΪÊǹ²Ïí»º´æ¡£´ËЭÒéµÄÆäËü²¿·Ö¸øÒ»Ð©¶Ô¹²Ïí»º´æµÄÏÞÖÆÒÔ·ÀÖ¹Òþ˽¶ªÊ§»ò·ÃÎÊ¿ØÖƵÄʧ°Ü¡£

13.8 ´íÎóºÍ²»ÍêÈ«µÄÏìÓ¦»º´æÐÐΪ
»º´æÊÕµ½²»ÍêÕûÏìÓ¦£¨ÀýÈçÏìÓ¦µÄ×Ö½ÚÊý±ÈContent-LengthÍ·ÓòÖ¸¶¨µÄֵҪС£©Ò²¿ÉÒÔ´æ´¢Ëü£¬µ«ÊDZØÐë°ÑËü¿´×÷²¿·ÖÏìÓ¦¡£²¿·ÖÏàÓ¦¿ÉÒԺϲ¢£¨¼û13.5.4£©£»ºÏ²¢½á¹û¿ÉÄÜÊÇÍêÕûµÄÏìÓ¦»ò¿ÉÄÜÈÔÊDz¿·ÖµÄÏìÓ¦¡£.»º´æ²»ÄܰѲ¿·ÖÏìÓ¦·µ»Ø¸ø¿Í»§¶Ë³ý·ÇÓÐÃ÷È·ÒªÇó¿ÉÒÔÕâÑù×öÀýÈçÀûÓÃ206£¨²¿·ÖÄÚÈÝ£©×´Ì¬ÂëÏìÓ¦¡£»º´æ²»ÄÜʹÓÃÒ»¸ö200£¨OK£©×´Ì¬Âë·µ»ØÒ»¸ö²¿·ÖÏìÓ¦¡£

Èç¹û»º´æÔÚÊÔÍ¼ÖØÑéÖ¤Ò»¸ö»º´æÏî¶øÊÕµ½Ò»¸ö5xxÏìӦʱ£¬Ëü¼È¿ÉÒÔ½«´ËÏìӦת·¢¸øÇëÇóµÄ¿Í»§¶Ë£¬»òÕß×öµÄ¾ÍÏñ·þÎñÆ÷²»ÄÜÏìÓ¦ËÆµÄ¡£ÔÚºóÃæµÄÇé¿öÏ£¬Ëü¿ÉÄÜ·µ»ØÒ»¸öÒÔǰµÄ½ÓÊÕµÄÏìÓ¦³ý·Ç»º´æÏî°üº¬Ò»¸ö“must-revalidate”»º´æ¿ØÖÆÖ¸Á¼û14.9½Ú£©¡£

13.9 GET ºÍ HEAD µÄ¸±×÷Óã¨Side Effects of GET and HEAD£©
³ý·ÇÔ´·þÎñÆ÷Ã÷È·µØ½ûÖ¹»º´æ±£´æËüÃǵÄÏìÓ¦£¬¶ÔÈκÎ×ÊÔ´Ó¦ÓõÄGETºÍHEAD·½·¨²»Ó¦¸ÃÓи±×÷Óã¬ÕâЩ¸±×÷ÓûᵼÖ´íÎóµÄÐÐΪÈç¹ûÕâЩÏìÓ¦½«´Ó»º´æ²úÉú¡£ËûÃÇ¿ÉÄÜ»áÈÔÈ»Óи±×÷Ó㬵«»º´æÔÚ¾ö¶¨»º´æÊ±²»±Ø¿¼ÂÇÕâЩ¸±×÷Ó᣻º´æ×ÜÊÇÆÚÍûÈ¥¹Û²ìÒ»¸öÔ´·þÎñÆ÷¶Ô»º´æµÄÃ÷È·ÏÞÖÆ¡£

Ò»¸öÀýÍ⣺ÓÐЩӦÓÃϰ¹ßÓÚÔÚÔÚGETsºÍHEADs·½·¨ÀïʹÓòéѯURLs£¨ÔÚrel_path_partÀï°üº¬Ò»¸ö“?”£©È¥Ö´ÐÐÒ»¸ö²Ù×÷¶ø´øÀ´ºÜ´óµÄ¸±×÷Ó㬻º´æ²»ÄܰѴËURIsµÄÏìÓ¦¿´×÷Ò»¸ö±£Ïʵijý·Ç·þÎñÆ÷Ìṩһ¸öÏÔʾ¹ýÆÚʱ¼ä£¨explicit expiration time£©¡£ÕâÒâζ×Å´ËURIsµÄÒÔǰ´ÓHTTP/1.0·þÎñÆ÷²úÉúµÄÏìÓ¦²»ÄÜÀ´×ÔÓÚ»º´æ¡£¼û9.1.1½ÚÏà¹ØµÄÐÅÏ¢¡£

13.10 ÔÚ¸üлòɾ³ýºóµÄÎÞЧÐÔ
¶ÔÔ´·þÎñÆ÷ÉϵÄij×ÊÔ´Ö´Ðз½·¨µÄ¸±×÷ÓÿÉÄÜ»áʹһ¸ö»ò¶à¸öÒѾ­´æÔڵĻº´æÏîµÄ²»Í¸Ã÷ÐÔÎÞЧ¡£ÄǾÍÊÇ˵£¬ËäÈ»ËûÃÇ¿ÉÄÜ»á¼ÌÐøÊDZ£Ïʵ쬵«ÊÇËûÃDz»ÄÜ׼ȷµÄ·´Ó¦³öÔ´·þÎñÆ÷½«»á¶ÔÕâÒ»¸öеÄÇëÇó·µ»ØÊ²Ã´¡£

HTTPЭÒéÎÞ·¨±£Ö¤ËùÓдËÀ໺´æÏî¾ù±»±êÃ÷ÎÞЧ¡£ÀýÈ磬ÒýÆðÔ´·þÎñÆ÷ÉÏ×ÊÔ´±ä»¯µÄÇëÇó¿ÉÄܲ»»á´©¹ý´æÓÐÒ»¸ö»º´æÏîµÄ´úÀí¡£È»¶ø£¬Ò»Ð©¹æÔò°ïÖú¼õÉÙ´íÎóÐÐΪµÄ¿ÉÄÜ¡£

Ôڴ˽ÚÀ¶ÌÓï“ʹʵÌåÎÞЧ”Òâζ×Å»º´æ»á½«ËùÓÐÄǸöʵÌåµÄʵÀý´ÓËüµÄ´æ´¢ÀïÒÆ³ý£¬»òÕß°ÑÕâЩʵÌåµÄʵÀý±ê¼ÇΪ“ÎÞЧµÄ”²¢ÇÒÔÚËûÃÇ¿ÉÄÜ×÷ΪºóÐøÇëÇóµÄÏìӦʱ»á±»½øÐÐÖØÑéÖ¤¡£

һЩHTTP·½·¨±ØÐëÈûº´æÈ¥Ê¹Ò»¸öʵÌåÎÞЧ ¡£ÕâЩʵÌå±»ÇëÇóURIÖ¸¶¨£¬»òÔÚLocation»òÔÚContent-LocationÍ·ÓòÀï±»Ö¸¶¨£¨Èç¹û³öÏֵϰ£©¡£ÕâЩ·½·¨ÊÇ£º

-          PUT

-          DELETE

-          POST

ΪÁË·ÀÖ¹·þÎñÆ÷¹¥»÷¾Ü¾ø£¬Ò»¸ö»ùÓÚLocation»òContent-LocationÍ·ÓòÀïµÄURIµÄÎÞЧÐÔ´¦Àí±ØÐëÖ»ÓÐÔÚhost²¿·ÖºÍÇëÇóURIÀïµÄhost²¿·ÖÏàͬʱ²Å±»Ö´ÐС£      

Ò»¸ö»º´æÈç¹û²»ÄÜÀí½âÇëÇóÀïµÄ·½·¨£¬ÄÇôËüÓ¦¸ÃʹÇëÇóURIÖ¸¶¨µÄÈκÎʵÌåÎÞЧ¡£

13.11 Ç¿ÖÆÐ´Í¨¹ý£¨ Write-Through Mandatory£©
ËùÓпÉÄܶÔÔ´·þÎñÆ÷×ÊÔ´½øÐÐÐ޸ĵķ½·¨¶¼ÒªÐ´Í¨¹ý¸øÔ´·þÎñÆ÷£¨Òë×¢£ºÖ±½Ó´©¹ý»º´æÔÚ·þÎñÆ÷ÉÏÐ޸ģ©¡£Õâͨ³£°üÀ¨ËùÓз½·¨³ýÁËGETºÍHEAD·½·¨¡£»º´æÔÚ½«´ËÖÖÇëÇóת·¢¸ø·þÎñÆ÷²¢»ñµÃÏàÓ¦µÄÏìӦǰ²»ÄܶÔÇëÇó¿Í»§¶Ë×ö³öÏìÓ¦¡£ Õâ¸ö²»ÄÜ·ÀÖ¹´úÀí»º´æ£¨Òë×¢£ºÒ²¿ÉÒԽлº´æ·þÎñÆ÷£¬»º´æ£©ÔÚ·þÎñÆ÷ÒѾ­·¢ËÍ×îÖջظ´Ö®Ç°·¢ËÍ100£¨¼ÌÐø£©ÏìÓ¦¡£

Ïà·´Çé¿ö£¨Í¨³£½Ð“д»Ø”»ò“¿½±´»Ø”»º´æ£©ÔÚHTTP1.1ÖÐÊDz»ÔÊÐíµÄ£¬ÕâÊÇÓÉÓÚÌṩһÖ¸üзdz£À§ÄÑ£¬²¢ÇÒ·þÎñÆ÷£¬»º´æºÍÍøÂçµÄ¹ÊÕÏ»á³öÏÖÔÚ±Èд»ØÔç¡£

13.12 »º´æÌæ»» £¨Cache Replacement£©
Èç¹ûÒ»¸öеĿɻº´æµÄÏìÓ¦±»»º´æ½ÓÊÕ£¬Í¬Ê±¶ÔÕâÒ»×ÊÔ´µÄÏìÓ¦ÒѾ­ÔÚ»º´æÀï´æÔÚ£¬ÄÇô»º´æÓ¦¸ÃÀûÓÃ×îеÄÏìӦȥ»Ø¸´µ±Ç°µÄÇëÇó¡£»º´æ¿ÉÄÜ»á°Ñ´ËÐÂÏìÓ¦·Å½ø´æ´¢À²¢ÇÒÈç¹ûËüÂú×ãËùÓÐÆäËûµÄÒªÇ󣬻º´æ½«»áÀûÓôËÏìÓ¦À´ÏìÓ¦Èκν«À´µÄÇëÇó¡£Èç¹û»º´æÏë°Ñ´ËеÄÏìÓ¦¼Ó½ø»º´æµÄ´æ´¢£¬13.5.3µÄ¹æÔò±ØÐëÓ¦Óá£

˵Ã÷£ºÒ»¸öÐÂÏìÓ¦Èç¹ûËüµÄDateÍ·ÓòÖµ±ÈÒѾ­´æÔڵĻº´æÏìÓ¦µÄDateÍ·ÓòÖµÀÏ£¬ÄÇôËüÊDz»ÄÜ»º´æµÄ¡£

13.13 ÀúÊ·ÁÐ±í £¨History Lists£©
Óû§´úÀí¾­³£Ê¹ÓÃÀúÊ·»úÖÆ£¬Èç“Back”°´Å¥ºÍÀúÊ·ÁÐ±í£¬À´ÖØÐÂչʾÔÚÒ»¸ö»á»°Àï½ÓÊÕµÄÒ»¸öÉÔÔçµÄʵÌå¡£

ÀúÊ·»úÖÆºÍ»º´æ»úÖÆÊDz»Í¬¡£ÀúÊ·»úÖÆ²»Ó¦¸Ã³¢ÊÔչʾһ¸öµ±Ç°×ÊԴ״̬µÄÓïÒå͸Ã÷ÊÓͼ¡£ÆäÀúÊ·»úÖÆÖ»ÊÇΪÁËչʾÔÚ»ñµÃ×ÊԴʱ¿´µ½ÁËʲô¡£

ĬÈÏÇé¿ö£¬Ò»¸ö¹ýÆÚʱ¼ä²»»áÓ¦ÓÃÓÚÒ»¸öÀúÊ·»úÖÆ¡£Èç¹ûʵÌåÈÔÈ»ÔÚ´æ´¢ÀÀúÊ·»úÖÆÓ¦¸ÃÏÔʾËü¼´Ê¹ÊµÌå¹ýÆÚÁË£¬³ý·ÇÓû§½ÐÓû§´úÀíȥˢйýÆÚµÄÎĵµ¡£

Õâ²»Äܱ»½âÊÍÈ¥·ÀÖ¹ÀúÊ·»úÖÆ¸æËßÓû§ÊÓͼ¿ÉÄܹýÆÚÁË¡£

×¢Ò⣺Èç¹ûÀúÊ·»úÖÆÃ»±ØÒªµØ·ÀÖ¹ÁËÓû§¿´³Â¾ÉµÄ×ÊÔ´£¬ÄÇôÕâ»áÇ¿ÖÆ·þÎñ×÷ÕßÈ¥±ÜÃâÀûÓÃHTTP¹ýÆÚ¿ØÖƺͻº´æ¿ØÖÆ¡£·þÎñ×÷Õß¿ÉÄÜ»áÈÏΪÕâÊǷdz£ÖØÒªµÄµ±Óû§Ã»Óб»³ÊÏÖ´íÎóÏûÏ¢»ò¾¯¸æÏûÏ¢µ±ËûÃÇÀûÓõ¼Ïò°´Å¥£¨ÈçBACK°´Å¥£©È¥¿´ÒÔǰ»ñµÃµÄ×ÊԴʱ¡£¼´Ê¹ÓÐʱÕâЩ×ÊÔ´±¾²»Äܱ»»º´æ±£´æ»òÓ¦¸Ã¿ÉÄÜ»áºÜ¿ì¹ýÆÚ£¬Óû§½çÃæ¿ÉÄÜ»áÇ¿ÖÆ·þÎñ×÷ÕßÈ¥ÇóÖúÓÚÆäËû·ÀÖ¹»º´æµÄ·½·¨£¨ÀýÈ磬һ´ÎÐÔURLs£©ÎªÁ˱ÜÃâÀúÊ·»úÖÆ¹¦ÄܵIJ»ºÏÊʵÄ×÷Óá£

14 Í·Óò¶¨Òå
±¾½Ú¶¨ÒåÁËËùÓÐHTTP/1.1ÖÖ±ê׼ͷÓòµÄÓï·¨ºÍÓïÒå¡£¶ÔÓÚʵÌåÍ·Óò£¬·¢ËÍÕߺͽÓÊÕÕßÖ¸µÄÊǿͻ§¶ËºÍ·þÎñÆ÷£¬È¡¾öÓÚË­·¢ËͺÍË­½ÓÊÕ´ËʵÌå¡£

14.1  Accept
AcceptÇëÇóÍ·Óò±»ÓÃÓÚÖ¸¶¨·þÎñÆ÷·µ»Ø¸ø¿Í»§¶Ë¿É½ÓÊܵÄÏìӦýÌåÀàÐÍ¡£AcceptÍ·ÓòÄܱ»ÓÃÓÚÖ¸Ã÷ÇëÇóÊÇÆÚÍû·þÎñÆ÷·µ»ØÄ³Ð©ÆÚÍûµÄýÌåÀàÐ͵ÄÏìÓ¦£¬ÀýÈçÇëÇóÒ»¸öÄÚǶµÄͼÏñ¡£

 Accept         = "Accept" ":"

                        #£¨ media-range [ accept-params ] £©

 media-range    = £¨ "*/*"

                        | £¨ type "/" "*" £©

                        | £¨ type "/" subtype £©

                        £© *£¨ ";" parameter £©

 accept-params = ";" "q" "=" qvalue *£¨ accept-extension £©

 accept-extension = ";" token [ "=" £¨ token | quoted-string £© ]

ÐǺŔ*”×Ö·ûÓÃÓÚ°ÑýÌåÀàÐÍ×éºÏ³ÉÒ»¸ö·¶Î§£¬”*/*”Ö¸Ã÷ÁËËùÓеÄýÌåÀàÐͶø”type/*”Ö¸Ã÷ÁËtypeÀàÐ͵ÄËùÓÐ×ÓÀàÐÍ¡£Media-range¿ÉÄܰüº¬Ò»¸öýÌåÀàÐͲÎÊý¡£

ÿһ¸ömedia-range¿ÉÄÜ»á¸úËæÒ»¸ö»ò¶à¸öaccept-params£¬ÒÔ“q”²ÎÊýÖ¸Ã÷Ò»¸öÏà¶ÔµÄϲ°®³Ì¶ÈµÄÖÊÁ¿Òò×Ó¡£µÚÒ»¸ö“q”²ÎÊý£¨Èç¹ûÓеϰ£©°Ñaccept-paramsºÍmedia-range²ÎÊý·ÖÀëÁË¡£Ï²°®³Ì¶ÈÖÊÁ¿Òò×ÓÔÊÐíÓû§»òÓû§´úÀíÈ¥Ö¸Ã÷¶ÔÄǸömedia-rangeµÄÏà¶Ôϲ°®³Ì¶È£¬qvalueµÄ·¶Î§ÊÇ´Ó0µ½1£¨¼û3.9½Ú£©¡£È±Ê¡ÊÇq=1¡£

×¢Ò⣺ÀûÓÓq”²ÎÊýÃû×Ö½«Ã½ÌåÀàÐͲÎÊý£¨Òë×¢£ºmedia-rangeÀïµÄparameter£©ºÍaccept-extension·ÖÀ뿪À´ÊÇ»ùÓÚÀúÊ·µÄʵ¼ù¡£ËäÈ»Õâ·ÀÖ¹ÀïÈκÎýÌåÀàÐͲÎÊýÒÔ“q”ÃüÃû²¢Ê¹ÓÃÓÚmedia-rangeÀµ«ÔÚÒ»¸ömedia-rangeÀïʹÓÓq”±»ÈÏΪÊDz»¿ÉÄÜ·¢ÉúµÄ£¬ÕâÊÇÒòΪÔÚIANAµÄýÌåÀàÐÍ×¢²á±íÀïÊÇûÓГq”²ÎÊýµÄ²¢ÇÒÔÚAcceptÍ·ÓòÀïÀûÓÃÈκÎýÌåÀàÐͲÎÊýÒ²ÊǺÜÉٵġ£½«À´µÄýÌåÀàÐͲ»¹ÄÀøÈκÎÒÔ“q”ÃüÃûµÄ²ÎÊý×¢²á¡£

Àý×Ó:£º

 Accept £ºaudio/*£»q=0.2£¬audio/basic

¸ÃÀýÓ¦¸Ã±»½âÊͳɓÎÒϲ»¶audio/basic£¬µ«ÊÇ¿ÉÒÔ¸øÎÒ·¢ËÍÈκÎ×îÈÝÒ׵õÄaudioÀàÐÍ£¬µ«ÔÚϲ°®³Ì¶ÈÖÊÁ¿ÒªÏ½µ80%”¡£

Èç¹ûûÓÐAcceptÍ·Óò³öÏÖ£¬ÄÇô»á¼ÙÉè¿Í»§¶ËÄܽÓÊÜËùÓÐýÌåÀàÐÍ¡£Èç¹ûAcceptÍ·ÓòÔÚÇëÇóÏûÏ¢Àï³öÏÖ£¬²¢ÇÒÈç¹û·þÎñÆ÷¸ù¾ÝÁªºÏµÄAcceptÍ·ÓòÖµÅж¨Ëü²»ÄÜ·¢ËͿɽÓÊܵģ¨acceptable£©µÄÏìÓ¦£¬ÄÇô·þÎñÆ÷Ó¦¸Ã·¢ËÍ406£¨²»¿É½ÓÊܵģ©ÏìÓ¦¡£

Ò»¸ö¸ü¼ÓÏ꾡µÄÀý×ÓÈçÏ£º

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

Õâ¿ÉÄܱ»¿ÚÍ·µØ½âÊͳɓtext/html ºÍ text/x-cÊǸüϲ°®µÄýÌåÀàÐÍ£¬µ«ÊÇÈç¹ûËûÃDz»´æÔÚ£¬ÄÇô·¢ËÍtext/x-dviʵÌ壬µ«Èç¹ûtext/x-dviÒ²²»´æÔÚ£¬ÄÇô·¢ËÍtext/plainʵÌå¡£”

Media-rangeÄܱ»¸ü¾ßÌØÖ¸µÄmedia-range»òýÌåÀàÐ͸²¸Ç¡£Èç¹û¶à¸ömedia-rangeÓ¦ÓÃÁËÒ»¸öÌØÖ¸µÄÀàÐÍ£¬ÄÇô×îÌØÖ¸µÄÒýÓÃÓ¦¸ÃÓÅÏÈ¡£ÀýÈ磺

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

ÓµÓÐÏÂÃæµÄÓÅÏÈ˳Ðò£º

text/html; level=1

text/html

text/*

*/*

Ò»¸öýÌåÀàÐ͵Äϲ°®³Ì¶ÈÖÊÁ¿Òò×ÓÊǺÍÒ»¸ö¸ø¶¨µÄýÌåÀàÐÍÁªÏµÔÚÒ»ÆðµÄ£¬ËüÊÇÓɲéÕÒÄÜ×î¸ßÓÅÏÈÆ¥ÅäÄǸöýÌåÀàÐ͵Ämedia-range¾ö¶¨µÄ¡£ÀýÈ磺

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

text/html; level=2; q=0.4, */*; q=0.5

¿ÉÄÜ»áÒýÆðÏÂÃæÖµ±»ÁªÏµ£º

 text/html;level=1         = 1

 text/html                 = 0.7

 text/plain                = 0.3

 image/jpeg                = 0.5

 text/html;level=2         = 0.4

 text/html;level=3         = 0.7

×¢Ò⣺һ¸öÓû§´úÀí¿ÉÄÜ»áΪһ¸öÌØ¶¨µÄmedia-rangeÌṩһ¸öȱʡµÄÖÊÁ¿ÖµµÄ¼¯ºÏ¡£È»¶ø£¬³ý·ÇÓû§´úÀíÊÇÒ»¸ö²»ÄÜºÍÆäËûµÄ³ÊÏÖ´úÀí½»»¥µÄ·â±ÕµÄϵͳ£¬·ñÔòÕâ¸öȱʡµÄ¼¯ºÏÓ¦¸ÃÊDZ»Óû§¿ÉÉèÖõġ£

14.2  Accept-Charset
Accept-CharsetÇëÇóÍ·Óò¿ÉÒÔÓÃÀ´Ö¸³öÇëÇó¿Í»§¶ËÄܽÓÊÜʲôÑùµÄ×Ö·û¼¯ÏìÓ¦¡£Õâ¸öÍ·ÓòÔÊÐí¿Í»§¶ËÄÜ֪ͨ·þÎñÆ÷Ö¸¶¨ºÎÖִ˿ͻ§¶Ë¸üÄÜÀí½âµÄ»ò¸ü¾ßÌØÊâÄ¿µÄµÄ×Ö·û¼¯µÄÏìÓ¦¡£

Accept-Charset = "Accept-Charset" ":"

              1#£¨ £¨ charset | "*" £©[ ";" "q" "=" qvalue ] £©

×Ö·û¼¯ÖµÔÚ3.4½ÚÀïÃèÊö¡£Ã¿Ò»¸ö×Ö·û¼¯¿ÉÄܱ»¸øÓÚÒ»¸öÏëÁªÏµµÄÖÊÁ¿ÖµÓÃÀ´±íʾÓû§¶ÔÄǸö×Ö·û¼¯µÄϲ°®³Ì¶È¡£È±Ê¡ÖµÊÇq=1.ÀýÈ磺

Accept-Charset: iso-8859-5, unicode-1-1;q=0.8

ÌØÊâµÄ“*”ÖµÈç¹û³öÏÖÔÚAccept-CharsetÍ·ÓòÀÄÇô½«Æ¥ÅäÈκÎ×Ö·û¼¯£¨character set£©£¨°üº¬ISO-8859-1£©¡£Èç¹ûûÓГ*”³öÏÖÔÚAccept-CharsetÍ·ÓòÀÄÇôËùÓгöÏÖµÄ×Ö·û¼¯µÄÖÊÁ¿ÖµÎª0£¬³ýÁËISO-8859-1£¬ËüµÄÖÊÁ¿ÖµÎª1Èç¹ûûÓгöÏÖÔÚAccept-CharsetÍ·ÓòÀï¡£

Èç¹ûAccept-CharsetÍ·ÓòûÓгöÏÖ£¬ÄÇôȱʡÇé¿öÊÇÈκÎ×Ö·û¼¯»á½ÓÊÜ¡£Èç¹ûAcceptÍ·Óò³öÏÖÔÚÇëÇóÏûÏ¢Àï²¢ÇÒ·þÎñÆ÷²»ÄÜ·¢ËͿͻ§¶ËÏëÒªµÄAccept-CharsetÀïÖ¸¶¨µÄ×Ö·û¼¯µÄÏìÓ¦£¬ÄÇô·þÎñÆ÷½«·¢ËÍÒ»¸ö406£¨²»ÄܽÓÊܵģ©´íÎóÏìÓ¦£¬È»¶ø·¢ËÍÒ»¸ö²»Äܲ»ÄÜÈÿͻ§¶Ë½ÓÊܵÄ×Ö·û¼¯µÄÏìÓ¦Ò²ÊÇÔÊÐíµÄ¡£

14.3  Accept-Encoding
Accept-EncodingÇëÇóÍ·ÓòºÍAcceptÍ·ÓòÏàËÆ£¬µ«Accept-EncodingÊÇÏÞ¶¨·þÎñÆ÷·µ»Ø¸ø¿Í»§¶Ë¿ÉÒÔ½ÓÊܵÄÄÚÈݱàÂ루content-coding£¬¼û3.5½Ú£©¡£

        Accept-Encoding = "Accept-Encoding" ":"

                      1#£¨ codings [ ";" "q" "=" qvalue ] £©

       codings          = £¨ content-coding | "*" £©

ʹÓõÄÀý×ÓÈçÏ£º

       Accept-Encoding: compress, gzip

       Accept-Encoding:

       Accept-Encoding: *

       Accept-Encoding: compress;q=0.5, gzip;q=1.0

       Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0

·þÎñÆ÷²âÊÔÒ»¸öÄÚÈݱàÂ루content-coding£©ÊÇ·ñÊǿɽÓÊܵģ¬ÊǸù¾ÝAccept-EncodingÍ·Óò£¬²¢ÀûÓÃÏÂÃæµÄ¹æÔòÀ´¾ö¶¨£º

Èç¹ûÒ»¸öÄÚÈݱàÂ루content-coding£©ÔÚAccept-EncodingÍ·ÓòÀï³öÏÖ£¬ÄÇôËüÊÇ¿ÉÒÔ½ÓÊܵģ¨acceptable£©£¬³ý·ÇËüµÄqvalueΪ0¡££¨ÕâÔÚ3.9½ÚÀﶨÒ壬һ¸öqvalueΪ0˵Ã÷ÊÇ“²»¿É½ÓÊܵĔ£©

Èç¹û“*”×Ö·û³öÏÖÔÚAccept-EncodingÍ·ÓòÀÄÇôËüÆ¥ÅäÈκÎûÓгöÏÖÔÚAccept-EncodingÍ·ÓòµÄ¿ÉµÃµÄÄÚÈݱàÂë¡£

Èç¹û¶à¸öÄÚÈݱàÂëÊǿɽÓÊܵģ¬ÄÇôqvalueΪ×î¸ßµÄÇÒ·Ç0µÄÄÚÈݱàÂëÊÇ×îϲ»¶µÄ¡£

“identity”ÄÚÈݱàÂë×ÜÊǿɽÓÊܵ쬳ý·ÇqvalueΪ0£¬»òÕßAccept-EncodingÍ·Óò°üº¬“*;q=0”²¢ÇÒͬʱûÓаüº¬“identity”ÄÚÈݱàÂë¡£Èç¹ûAccept-EncodingÍ·ÓòֵΪ¿Õ£¬ÄÇôֻÓГidentity”±àÂëÊǿɽÓÊܵġ£

Èç¹ûAccept-EncodingÍ·ÓòÔÚÇëÇóÀï³öÏÖ£¬²¢ÇÒÈç¹û·þÎñÆ÷²»ÄÜ·¢ËÍÒ»¸öAccept-EncodingÍ·ÓòÀïÖ¸¶¨µÄ±àÂëÏìÓ¦£¬ÄÇô·þÎñÆ÷Ó¦¸Ã·¢ËÍÒ»¸ö406£¨²»½ÓÊܵģ©´íÎóµÄÏìÓ¦¡£

Èç¹ûûÓÐAccept-EncdongÍ·Óò³öÏÖÔÚÇëÇóÏûÏ¢À·þÎñÆ÷Ó¦¸Ã¼ÙÉè¿Í»§¶Ë½«½ÓÊÜÈκÎÄÚÈݱàÂë¡£ÔÚÕâÖÖÇé¿öÏ£¬Èç¹û“identity”ÊÇÕâЩ¿ÉµÃµÄÄÚÈݱàÂëÖеÄÒ»¸ö£¬ÄÇô·þÎñÆ÷½«ÀûÓÓidentity”ÄÚÈݱàÂ룬³ý·Ç·þÎñÆ÷ÓÐÁíÍâµÄÐÅÏ¢Ö¸Ã÷ÆäËûµÄÄÚÈݱàÂë¶Ô¿Í»§¶ËÊÇÓÐÒâÒåµÄ¡£

×¢Ò⣺Èç¹ûÇëÇó²»Äܰüº¬Ò»¸öAccept-EncodingÍ·Óò£¬²¢ÇÒÈç¹û“identity”ÄÚÈݱàÂëÊDz»ÄܽÓÊܵģ¬ÄÇôͨ³£²»Äܱ»HTTP/1.0¿Í»§¶ËÀí½âµÄÄÚÈݱàÂ루Ҳ¾ÍÊÇ˵£¬“gzip”ºÍ“compress”£©Í¨³£ÊÇ×îϲ°®µÄ£»Ò»Ð©ÀϵĿͻ§¶ËÓÐʱºò»á²»ºÏÊʵÄÏÔʾÒÔÆäËûÄÚÈݱàÂëµÄÏûÏ¢¡£·þÎñÆ÷Ó¦¸ÃÕÕÑùÄÜ»ùÓÚÌØ¶¨µÄÓû§´úÀí»ò·þÎñÆ÷µÄÐÅÏ¢×ö³ý¾ö¶¨ÓúÎÖÖÄÚÈݱàÂëÏìÓ¦¡£

×¢Ò⣺´ó¶àÊýHTTP/1.0Ó¦ÓóÌÐò²»ÄÜʶ±ð»ò×ñÑ­Ò»¸öÄÚÈݱàÂë¸úËæÒ»¸öqvalue¡£ÕâÒâζ×Åqvalue½«²»Äܹ¤×÷²¢ÇÒÔÚx-gzip»òx-compressÀï²»Äܱ»ÔÊÐí¡£

14.4  Accept-Language
Accept-LanguageÇëÇóÍ·ÓòºÍAcceptÇëÇóÍ·ÓòÀàËÆ£¬µ«ÊÇËüÊÇÏÞ¶¨·þÎñÆ÷·µ»Ø¸ø¿Í»§¶Ëϲ°®µÄ×ÔÈ»ÓïÑÔ¡£

       Accept-Language = "Accept-Language" ":"

                         1#£¨ language-range [ ";" "q" "=" qvalue ] £©

       language-range = £¨ £¨ 1*8ALPHA *£¨ "-" 1*8ALPHA £© £© | "*" £©

ÿ¸ölanguage-range¾ù±»¸³ÒÔÒ»¸öÖÊÁ¿Öµ£¬Ëü´ú±íÓû§¶Ô´Ëlanguage-rangeÀﺭ¸ÇÓïÑÔµÄϲ°®³Ì¶È¡£ÖÊÁ¿ÖµÈ±Ê¡Îª1£¬ÀýÈ磺

       Accept-Language: da, en-gb;q=0.8, en;q=0.7

ºÃÏñÔÚ˵£º“ÎÒ¸üϲ»¶Danish£¬µ«ÊÇÒ²¿ÉÒÔ½ÓÊÕBritish EnglishºÍÆäËûµÄEnglishµÄÀàÐ͵ÄÓïÑÔ¡£”Ò»¸ölanguage-rangeÆ¥ÅäÒ»¸öÓïÑÔ±êÇ©£¨Òë×¢£ºÈçÉÏÃæÀý×ÓµÄda£¬en-gb£¬en£©Èç¹ûËüÄܾ«È·ºÍ´ËÓïÑÔ±êÇ©ÏàµÈ£¬»òÕßËüÄܾ«È·Æ¥Åä´Ë±êÇ©µÄǰ׺£¨ÔÚ“-”ÒÔǰµÄ²¿·Ö£©¡£ÌØÊâµÄ“*”£¬Èç¹û³öÏÖÔÚAccept-LanguageÍ·ÓòÀ±íÃ÷ÄÜÆ¥ÅäÈκβ»ÔÚ´ËÍ·ÓòÀïµÄÈκαêÇ©¡£

×¢Ò⣺ǰ׺ƥÅ乿ÔòÒâζ×ÅÓû§ÄÜÀí½âÆ¥Åä´Ëǰ׺µÄËùÓÐÓïÑÔ¡£

Ò»¸öÓïÑÔ±êÇ©µÄÖÊÁ¿Òò×ÓÊÇAccept-LanguageÍ·ÓòÀï×îÄÜÆ¥Åä´ËÓïÑÔ±êÇ©µÄlanguage-rangeµÄÖÊÁ¿Öµ¡£Èç¹ûAccept-LanguageÍ·ÓòÀïûÓÐlanguage-rangeÆ¥Åä´ËÓïÑÔ±êÇ©£¬ÄÇô´ËÓïÑÔµÄÖÊÁ¿Òò×Ó±»¸³Óè0¡£Èç¹ûûÓÐAccept-LanguageÍ·Óò³öÏÖÔÚÇëÇóÀÄÇô·þÎñÆ÷Ó¦¸Ã¼ÙÉèËùÓÐÓïÑÔ½«ÊǿɽÓÊܵġ£Èç¹ûÒ»¸öAccept-LanguageÍ·Óò³öÏÖÔÚÇëÇóÀÄÇôËùÓÐÖÊÁ¿Òò×Ó´óÓÚ0µÄÓïÑÔÊǿɽÓÊܵġ£

Èç¹û·¢ËÍÒ»¸öºÍÓû§Ï²°®µÄÓïÑÔÏà·´£¬Õ⽫ÔÚ15.1.4ÀïÌÖÂÛ¡£

ÓÉÓÚ¸ö±ðµÄÓû§µÄÀí½â³Ì¶È²»Ò»Ñù£¬½¨Òé¿Í»§¶ËÓ¦ÓóÌÐòÈÃÓû§¶ÔÓïÑÔµÄÆ«ºÃ½øÐÐÑ¡Ôñ¡£Èç¹û¿Í»§²»ÄܽøÐÐÑ¡Ôñ£¬ÄÇôAccept-LanguageÍ·Óò²»ÄÜÔÚÇëÇóÀï¸ø³ö¡£

×¢Ò⣺µ±ÈÃÓû§×÷³öÑ¡Ôñʱ£¬ÎÒÃÇҪʵÏÖÕßÒ»¸öÊÂʵÄǾÍÊǿͻ§²»ÊìϤÓïÑÔµÄϸ½Ú£¬²¢ÇÒ²»»áÌṩһ¸öºÏÊʵÄÖ¸µ¼¡£ÀýÈ磬Óû§¿ÉÄÜ»áÈÏΪµ±Ñ¡ÔñÁË“en-gb”»áÌṩÈκÎÀàÐ͵ÄÓ¢ÓïÎĵµ¼´Ê¹British EnglishÊDz»¿ÉµÃµÄ¡£Ò»¸öÓû§´úÀíÓ¦¸ÃÄܽ¨ÒéÈ¥Ôö¼ÓÒ»¸ö“en”È¥µÃµ½×îºÏÊÊµÄÆ¥ÅäÐÐΪ¡£

14.5  Accept-Range
Accept-RangeÏìӦͷÓòÔÊÐí·þÎñÆ÷Ö¸Ã÷Ëü¶Ô¿Í»§µÄ·¶Î§ÇëÇó£¨range request£¬Òë×¢£ºµ±ÔÚÇëÇóÏûÏ¢Àï³öÏÖRangeÍ·Óòʱ±íÃ÷´ËÇëÇóÊÇ·¶Î§ÇëÇ󣩵ĽÓÊ̶ܳȡ£

     Accept-Ranges     = "Accept-Ranges" ":" acceptable-ranges

     acceptable-ranges = 1#range-unit | "none"

Ô´·þÎñÆ÷Èç¹û½ÓÊÜ×Ö½Ú·¶Î§ÇëÇó(byte-range request)ÄÇô¿ÉÒÔ·¢ËÍ

      Accept-Ranges: bytes

µ«ÊÇûÓбØÒªÕâÑù×ö¡£¿Í»§¶ËÔÚûÓнÓÊÕ´ËÍ·ÓòʱҲ¿ÉÒÔ²úÉú×Ö½Ú·¶Î§ÇëÇó£¨byte-range request£©¡£·¶Î§µ¥Î»£¨range units£©±»¶¨ÒåÔÚ3.12½Ú¡£

·þÎñÆ÷Èç¹û²»ÄܽÓÊÜÈκÎÀàÐ͵ķ¶Î§ÇëÇó£¨range request£©£¬½«»á·¢ËÍ

Accept-Ranges£ºnone

È¥¸æË߿ͻ§²»Òª³¢ÊÔ·¶Î§ÇëÇó£¨range request£©¡£

14.6  Age
AgeÏìӦͷÓò±íʾ·¢ËÍÕߣ¨Òë×¢£ºÒ»°ãÊÇ»º´æ£©¶ÔÏìÓ¦²úÉú£¨»òÖØÑéÖ¤£©Ê±¿Ìºó¾­¹ýʱ¼äµÄ¹À¼Æ¡£Ò»¸ö»º´æµÄÏìÓ¦ÊDZ£Ïʵģ¨fresh£©Èç¹û´ËÏìÓ¦µÄÄêÁäûÓг¬¹ýËüµÄ±£ÏÊÊÙÃü£¨freshness response£©¡£AgeÖµÔõÑù¼ÆËãÔÚ13.2.3½ÚÀïÃèÊöÁË¡£

                 Age = "Age" ":" age-value

                 age-value = delta-seconds

AgeÖµÊÇÊ®½øÖƷǸºÕûÊý£¬²¢ÇÒÒÔÃëΪµ¥Î».¡£

Èç¹û»º´æ½ÓÊÕµ½Ò»¸öAgeÖµ´óÓÚËüËùÄܱíʾµÄÉÏÏÞ£¬»òËüµÄÄêÁ伯Ëã³öÏÖÒç³ö£¬ÄÇôËü±ØÐë´«ËÍAgeÍ·ÓòµÄֵΪ2147483648 £¨2^31£©¡£Ò»¸öHTTP/1.1·þÎñÆ÷Èç¹û°üº¬Ò»¸ö»º´æ£¬ÄÇôËü±ØÐë°üº¬Ò»¸öAgeÍ·ÓòÔÚËüÓµÓлº´æ²úÉúµÄÈκÎÏìÓ¦Àï¡£»º´æÓ¦¸ÃÀûÓÃÒ»¸öÖÁÉÙ31λµÄÔËËãÀàÐÍ¡£

14.7  Allow
AllowʵÌåÍ·ÓòÖÐÁгöÁËÇëÇóURI£¨Request-URI£©Ö¸¶¨×ÊÔ´ËùÖ§³ÖµÄ¼¸ÖÖ·½·¨¡£´ËÍ·ÓòµÄÄ¿µÄÊÇÑϸñµØÈýÓÊÕ¶ËÖªµÀ×ÊÔ´ËùÊʺϵķ½·¨¡£AllowÍ·Óò±ØÐë³öÏÖÔÚ405£¨·½·¨²»±»ÔÊÐí£©ÏìÓ¦ÖС£

     Allow = "Allow" ":"  #Method

ʹÓÃʾÀý£º

     Allow: GET, HEAD, PUT

ÕâһͷÓò²»ÄÜ×èÖ¹¿Í»§¶ËʹÓÃÆäËû·½·¨¡£È»¶øÖ»ÓÐÔÚAllowÍ·ÓòÓòÖиø³öµÄ·½·¨²ÅÓ¦¸Ã±»Ö´ÐС£AllowÍ·ÓòÀïÖ¸¶¨µÄ·½·¨±»Ô´·þÎñÆ÷¶¨Ò壬²¢ÇÒÔÚÿ´ÎÇëÇóµÄÏìÓ¦Àï¶¼Ó¦¸Ã³öÏÖÕâЩ·½·¨¡£

AllowÍ·ÓòÀï¿ÉÒÔ±»ÌṩÔÚÒ»¸öPUTÇëÇóÀÕâÊÇΪÁË˵Ã÷еĻò¸Ä±äµÄ×ÊÔ´Ö§³ÖÕâЩ·½·¨¡£·þÎñÆ÷²»ÐèҪȥ֧³ÖÕâЩ·½·¨£¬¶øÇÒÓ¦¸Ã°üº¬Ò»¸öAllowÍ·ÓòÔÚÏìÓ¦Àï²¢ÇÒ¸ø³öʵ¼ÊÖ§³ÖµÄ·½·¨¡£

´úÀí·þÎñÆ÷²»ÄܸıäAllowÍ·Óò¼´±ã²»Àí½â´ËÍ·ÓòÀïÖ¸Ã÷µÄËùÓз½·¨£¬ÒòΪÓû§´úÀí¿ÉÄܺÍÔ´·þÎñÆ÷ͨÐÅÓÐÆäËûµÄÄ¿µÄ¡£

14.8 Authorization £¨ÊÚȨ£©
Óû§´úÀíÍùÍùÏ£Íûͨ¹ý·þÎñÆ÷¸ø×Ô¼ºÊÚȨ£¬Óû§´úÀíÕâÑù×öÊÇͨ¹ýÔÚÇëÇóÀï°üº¬Ò»¸öAuthorizationÇëÇóÍ·Óò£¬µ«ÊÇͨ³£ÔÚ½ÓÊÕÁËÒ»¸ö401ÏìÓ¦ºó¾ÍûÓбØÒªÈ÷þÎñÆ÷¸ø×Ô¼ºÊÚȨÁË¡£AuthorizationÍ·ÓòÓɰüº¬Óû§´úÀí¶ÔÄǸöÇëÇó×ÊÔ´ÓòµÄÊÚȨÐÅÏ¢µÄÖ¤Ê飨credentials£©×é³É¡£

Authorization = "Authorization" ":" credentials

HTTP·ÃÎÊÊÚȨÔÚ“HTTP Authenticatiion£ºBasic and Digest Access Authentication”[43]ÖÐÃèÊö¡£Èç¹ûÒ»¸öÇëÇó±»ÊÚȨ²¢ÇÒÒ»¸öÓò£¨realm£©±»Ö¸¶¨£¬ÄÇôÕâ¸öÖ¤ÊéÓ¦¸Ã¶Ô´ËÓòÀïËùÓÐµÄÆäËûÇëÇóÊÇÓÐЧµÄ£¨¼ÙÉèÔÚ´ËÊÚȨģʽÏ£¬Ö¤Êé²»»á¸ù¾ÝÒ»¸ö¼¤·¢Öµ»òÀûÓÃÒ»¸öͬ²½µÄʱÖÓ¶ø±ä»¯£©¡£

µ±Ò»¸ö¹²Ïí»º´æ£¨shared cache£©£¨¼û13.7½Ú£©½ÓÊÕÒ»¸öÇëÇ󣬲¢ÇÒ´ËÇëÇó°üº¬Ò»¸öAuthorizationÍ·Óòʱ£¬ÄÇôËü²»ÄÜ·µ»Ø´ËÇëÇóÏàÓ¦µÄÏìÓ¦À´»Ø¸´ÈÎºÎÆäËûµÄÇëÇ󣬳ý·ÇÏÂÃæÖ¸¶¨µÄÒì³£·¢Éú£º

Èç¹û´ËÏìÓ¦°üº¬“s-maxage”»º´æ¿ØÖÆÖ¸ÁÄÇô´Ë»º´æ¿ÉÄÜ»áÀûÓÃÄǸöÏìÓ¦À´ÏìÓ¦Ò»¸öºóÐøµÄÇëÇó¡£µ«ÊÇ£¨Èç¹ûÖ¸¶¨µÄage¹ýÆÚÁË£©Ò»¸ö´úÀí»º´æ±ØÐëÊ×ÏÈͨ¹ýÔ´·þÎñÆ÷À´ÖØÑéÖ¤´ËÏìÓ¦£¬ÀûÓÃÐÂÇëÇóÀïµÄAuthorizationÇëÇóÍ·ÓòÈ¥ÈÃÔ´·þÎñÆ÷ÊÚȨ´ËÐÂÇëÇó¡££¨ÕâÊÇΪ“s-maxage=0”¶¨ÒåµÄÐÐΪ¡££©Èç¹ûÏìÓ¦°üº¬“s-maxmax=0”£¬ÄÇô´úÀí±ØÐë×ÜÊÇÖØÑéÖ¤´ËÏìÓ¦ÔÚÖØÀûÓÃËü֮ǰ¡£

Èç¹û´ËÏìÓ¦°üº¬“must-revalidate”»º´æ¿ØÖÆÖ¸ÁÄÇô»º´æ¿ÉÄÜ»áÀûÓÃÄǸöÏìÓ¦À´ÏìÓ¦Ò»¸öºóÐøµÄÇëÇó¡£µ«ÊÇÈç¹û´ËÏìÓ¦Êdz¾ɵģ¬ÄÇôËùÓлº´æ±ØÐëÊ×ÏÈͨ¹ýÔ´·þÎñÆ÷ÖØÑéÖ¤ÄǸöÏìÓ¦£¬ÀûÓÃÐÂÇëÇóÀïµÄAuthorizationÇëÇóÍ·ÓòÈ¥ÈÃÔ´·þÎñÆ÷È¥ÊÚȨ´ËÐÂÇëÇó¡£

Èç¹ûÏìÓ¦°üº¬¹²Óлº´æÖ¸ÁÄÇôËü¿ÉÄÜ»áÏìÓ¦ÈκκóÐøµÄÇëÇó¡£

14.9  Cache-Control
Cache-Control³£ÓÃÍ·Óò±»ÓÃÓÚÖ¸¶¨Ö¸Á´ËÖ¸Áî±ØÐë±»ÔÚÇëÇó/ÏìÓ¦Á´ÉϵÄËùÓлº´æ»úÖÆ×ñÊØ¡£ÕâЩָÁîÖ¸¶¨·ÀÖ¹»º´æ¸ÉÉæÇëÇó»òÏìÓ¦µÄÐÐΪ¡£ÕâЩָÁî¾­³£¸²¸ÇȱʡµÄ»º´æËã·¨¡£»º´æÖ¸ÁîÊǵ¥·½ÏòµÄ£¬ÒòΪÇëÇóÖÐÖ¸ÁîµÄ´æÔÚ²¢²»Òâζ×ÅÏìÓ¦ÖÐÒ²»áÓÐͬÑùµÄÖ¸Áî¡£

Çë×¢ÒâHTTP/1.0»º´æ¿ÉÄܲ¢²»ÊµÏÖCache-Control£¬¶øÊÇֻʵÏÖPragma: no-cache£¨²Î¼û14.31½Ú£©¡£

´úÀí»òÍø¹ØÓ¦ÓóÌÐò±ØÐëÈûº´æÖ¸Áîͨ¹ý²»¹ÜÕâЩָÁî¶Ô×Ô¼ºµÄÓ°Ï죬ÒòΪÕâЩָÁî¿ÉÄܶÔÇëÇó/ÏìÓ¦Á´ÉϵÄËùÓнÓÊÕÕß¶¼ÊÊÓᣲ»¿ÉÄÜΪһ¸öÌØ¶¨µÄ»º´æÖ¸¶¨Ò»¸ö»º´æÖ¸Áî¡£

Cache-Control = "Cache-Control" ":" 1#cache-directive

cache-directive = cache-request-directive

| cache-response-directive

cache-request-directive =

"no-cache" ; Section 14.9.1

| "no-store" ; Section 14.9.2

| "max-age" "=" delta-seconds ; Section 14.9.3, 14.9.4

| "max-stale" [ "=" delta-seconds ] ; Section 14.9.3

| "min-fresh" "=" delta-seconds ; Section 14.9.3

| "no-transform" ; Section 14.9.5

| "only-if-cached" ; Section 14.9.4

| cache-extension ; Section 14.9.6

cache-response-directive =

"public" ; Section 14.9.1

| "private" [ "=" <"> 1#field-name <"> ] ; Section 14.9.1

| "no-cache" [ "=" <"> 1#field-name <"> ]; Section 14.9.1

| "no-store" ; Section 14.9.2

| "no-transform" ; Section 14.9.5

| "must-revalidate" ; Section 14.9.4

| "proxy-revalidate" ; Section 14.9.4

| "max-age" "=" delta-seconds ; Section 14.9.3

| "s-maxage" "=" delta-seconds ; Section 14.9.3

| cache-extension ; Section 14.9.6

cache-extension = token [ "=" ( token | quoted-string ) ]

µ±Ö¸Áî²»°éÓÐ1#field-name²ÎÊý³öÏÖʱ£¬¸ÃÖ¸ÁîÊÊÓÃÓÚÕû¸öÇëÇó»òÏìÓ¦¡£µ±ÕâÑùÒ»¸öÖ¸Áî°éÓÐÒ»¸ö1#field-name²ÎÊýʱ£¬Ëü½öÓ¦ÓÃÓÚ±»ÃüÃûµÄÍ·Óò£¬¶ø²»ÄÜÓ¦ÓÃÓÚÇëÇó»òÏìÓ¦µÄÆäËû²¿·Ö¡£ÕâÒ»»úÖÆÖ§³Ö¿ÉÀ©Õ¹ÐÔ£»HTTPЭÒ齫À´µÄ°æ±¾µÄʵÏÖ¿ÉÒÔͨ¹ý½«Ö¸ÁîÓ¦ÓÃÓÚHTTP/1.1ÖÐ䶨ÒåµÄÍ·Óò¡£

»º´æ¿ØÖÆÖ¸Áî¿É·ÖΪÈçϼ¸Àࣺ

-          ¶ÔʲôÊǿɻº´æµÄÏÞÖÆ£»Õâ¿ÉÄÜÖ»ÓÉÔ´·þÎñÆ÷Ö¸¶¨¡£

-          ¶ÔʲôÄܱ»»º´æ±£´æµÄÏÞÖÆ£»Õâ¿ÉÓÉÔ´·þÎñÆ÷»òÓû§´úÀíÖ¸¶¨¡£

-          ¶Ô»ù±¾¹ýÆÚ»úÖÆµÄ¸Ä½ø£»Õâ¿ÉÄÜÓÉÔ´·þÎñÆ÷»òÓû§´úÀíÖ¸¶¨¡£

-          ¶Ô»º´æÖØÑéÖ¤¼°ÖØÔصĿØÖÆ£»Õâ¿ÉÄܽöÓÉÓû§´úÀíÖ¸¶¨¡£

-          ¶ÔʵÌå´«ÊäµÄ¿ØÖÆ

-          »º´æÏµÍ³µÄÀ©Õ¹¡£

 

14.9.1ʲôÊǿɻº´æµÄ
ȱʡÇé¿öÏ£¬ÈôÇëÇó·½·¨¡¢ÇëÇóÍ·ÓòºÍÏìӦ״̬ÂëÖ¸Ã÷ÁËÏìӦΪ¿É»º´æµÄ£¬Ôò´ËÏìÓ¦¾ÍÊÇ¿ÉÒÔ»º´æµÄ¡£13.4½Ú×ܽáÁ˿ɻº´æÐÔµÄÕâЩȱʡÇé¿ö¡£ÏÂÁлº´æ¿ØÖÆÏìÓ¦Ö¸ÁCache-Control response deirctives£©ÔÊÐíÔ´·þÎñÆ÷¸²¸ÇȱʡµÄÏìÓ¦¿É»º´æÐÔ£º

public

  Ö¸Ã÷ÏìÓ¦ÏìÓ¦¿ÉÒÔ±»Èκλº´æ±£´æ£¬¼´±ã¸ÃÏìӦͨ³£ÊDz»¿É»º´æµÄ»ò¸ÃÏìÓ¦Ö»±»Ò»¸ö·Ç¹²Ïí»º´æ±£´æµÄÇé¿öÏ¡££¨²Î¼û14.8½Ú£¬¹ØÓÚAuthorizationÍ·ÓòµÄ¸ü¶àÏêÊö¡££©

private

±íÃ÷ÏìÓ¦ÏûÏ¢µÄ²¿·Ö»òËùÓв¿·ÖÊÇΪһ¸öÓû§×¼±¸µÄ²¢ÇÒ²»µÃ±»¹²Ïí»º´æ±£´æ¡£ÕâʹԴ·þÎñÆ÷¿ÉÒÔÉêÃ÷ÏìÓ¦µÄÌØ¶¨²¿·ÖÊÇÕë¶ÔÒ»¸öÓû§£¬²¢ÇÒ¶ÔÆäËûÓû§µÄÇëÇó¶øÑÔ²»ÊÇÓÐЧµÄÏìÓ¦¡£Ò»¸ö˽ÓУ¨·Ç¹²Ïí£©»º´æ¿ÉÒÔ»º´æ´ËÏìÓ¦¡£

×¢£ºµ¥´ÊprivateµÄʹÓýöÓÃÀ´¿ØÖÆÏìÓ¦Ôںδ¦¿É±»»º´æ£¬¶ø²»Äܱ£Ö¤ÏûÏ¢ÄÚÈݵÄ˽ÓÐÐÔ¡£

no-cache

   Èç¹ûno-cache»º´æ¿ØÖÆÖ¸ÁîûÓÐÖ¸¶¨Ò»¸öfield-name£¬ÄÇôһ¸ö»º´æ²»ÄÜÀûÓôËÏìÓ¦ÔÚûÓÐͨ¹ýÔ´·þÎñÆ÷¶ÔËü½øÐгɹ¦µÄÖØÑéÖ¤µÄÇé¿öÏÂÈ¥Âú×ãºóÐøµÄÇëÇó¡£ÕâÔÊÐíÔ´·þÎñÆ÷È¥·ÀÖ¹ÏìÓ¦±»»º´æ±£´æ£¬¼´Ê¹´Ë»º´æÒѾ­±»ÉèÖÃÄÜ·µ»Ø¸ø¿Í»§¶ËÇëÇóÒ»¸ö³Â¾ÉµÄÏìÓ¦¡£

Èôno-cache»º´æ¿ØÖÆÖ¸ÁîÖ¸¶¨Ò»¸ö»ò¶à¸öfield-name£¬ÄÇôһ¸ö»º´æ¿ÉÒÔÀûÓôËÏìӦȥÂú×ãºóÐøµÄÇëÇ󣬵«ÕâÒªÊÜÏÞÓÚ¶Ô»º´æµÄÈÎºÎÆäËüÏÞÖÆ¡£È»¶ø£¬Ö¸¶¨µÄfiled-name±ØÐë²»ÄÜÔÚºóÐøÇëÇóµÄÏìÓ¦Àï±»·¢ËÍÈç¹û´ËÏìӦûÓÐÔÚÔ´·þÎñÆ÷ÄÇÀïµÃµ½³É¹¦ÖØÑéÖ¤µÄÇé¿öÏ¡£ÕâÔÊÐíÔ´·þÎñÆ÷ÄÜ·ÀÖ¹»º´æÖØÀûÓÃÏìÓ¦ÀïµÄijЩͷÓò£¬µ«ÈÔÈ»¿ÉÒÔÔÊÐí»º´æÏìÓ¦µÄÊ£Óಿ·Ö¡£

×¢Ò⣺´ó¶àÊýHTTP/1.0»º´æ½«²»ÄÜʶ±ð»ò×ñÑ­Õâ¸öÖ¸Áî¡£

14.9.2ʲôÄܱ»»º´æ±£´æ
no-store

no-store»º´æ¿ØÖÆÖ¸ÁîµÄÄ¿µÄÔÚÓÚ·ÀÖ¹ÎÞÒâµÄй¶»ò±£ÁôÁËÃô¸ÐÐÅÏ¢£¨±ÈÈç´æ·ÅÔÚ±¸·Ý´Å´øµÄÐÅÏ¢£©¡£ no-store»º´æ¿ØÖÆÖ¸ÁîÓ¦ÓÃÓÚÕû¸öÏûÏ¢£¬²¢ÇÒ¿ÉÒÔÔÚÏìÓ¦Àï»òÔÚÇëÇóÀï±»·¢ËÍ¡£Èç¹ûÔÚÇëÇóÀï±»·¢ËÍ£¬Ò»¸ö»º´æ²»Äܱ£´æ´ËÇëÇó»ò´ËÇëÇóÏìÓ¦µÄÈκβ¿·Ö¡£Èç¹ûÔÚÏìÓ¦Àï±»·¢ËÍ£¬Ò»¸ö»º´æ²»Äܱ£´æ´ËÏìÓ¦»òÒýÆð´ËÏìÓ¦ÇëÇóµÄÈκβ¿·Ö¡£´Ë»º´æ¿ØÖÆÖ¸ÁîÄÜÓ¦ÓÃÓڷǹ²Ïí»º´æºÍ¹²Ïí»º´æ¡£“²»Äܱ£´æ”ÔÚÕâ¸öÉÏÏÂÎÄÀcontext£¬Òë×¢£ºÒ²¿ÉÒԽб³¾°£©µÄÒâ˼ÊÇÖ¸»º´æ²»ÄÜÓÐÒâµÄ°ÑÐÅÏ¢±£´æÔÚ·ÇÒ×ʧÐÔ´æ´¢À¶øÇÒ±ØÐ뾡Á¦È¥É¾³ýÒ×ʧÐÔ´æ´¢ÉϵÄÐÅÏ¢µ±Ëüת·¢Íê±Ïºó¡£

¼´Ê¹µ±´ËÖ¸ÁîÔÚÒ»¸öÏìÓ¦Àïʱ£¬Óû§Ò²¿ÉÄÜ»áÏÔʾµØÔÚ»º´æÏµÍ³Ö®Íâ±£´æÕâ¸öÏìÓ¦£¨ÀýÈ磬ÀûÓÃÒ»¸ö“Áí´æÎª”¶Ô»°¿ò£©µÄµØ·½¡£ÀúÊ·»º´æ£¨Òë×¢£º¼û13.13½Ú£©¿ÉÄܱ£´æÕâ¸öÏìÓ¦×÷ΪËüÃÇÕý³£²Ù×÷µÄÒ»¸ö²¿·Ö¡£

´ËÖ¸ÁîµÄÄ¿µÄÊÇΪÁËÂú×ãijЩÓû§ÉùÃ÷µÄÐèÇ󣬻¹ÓоÍÊǸøÄÇЩ¶ÔżȻÐÅÏ¢·¢²¼£¨Õâͨ¹ýδԤÁϵضԻº´æÊý¾Ý×éÖ¯µÄ·ÃÎÊ£©±È½ÏÔÚÒâµÄ×÷ÕßÒ²Ìṩ·½±ã¡£ÔÚһЩÇé¿öÏ£¬ÀûÓô˻º´æ¿ØÖÆÖ¸Áî¿ÉÄÜ»áÔöÇ¿Òþ˽£¬µ«ÊÇÎÒÃÇ×¢Òâµ½Ëü²¢²»ÊÇÔÚÈκÎÇé¿ö϶¼ÊÇ¿ÉÐÅÈεĻò¶¼ÊÇÄܳä·ÖµØ±£»¤Òþ˽¡£ÌرðÊÇ£¬¶ñ¶¾µÃ»òÕßÓÐË𺦵Ļº´æ¿ÉÄܲ»ÄÜʶ±ðµ½»ò×ñÑ­´ËÖ¸Á²¢ÇÒÍøÂçͨÐÅËæÊ±Ò²ÈÝÒ×Êܵ½ÇÔÌý¡£

14.9.3¶Ô»ù±¾¹ýÆÚ»úÖÆµÄ¸Ä½ø
ʵÌåµÄ¹ýÆÚʱ¼ä£¨Òë×¢£ºÕâÀïµÄ¹ýÆÚʱ¼äÒ²¾ÍÊÇ“ÏÔʾ¹ýÆÚʱ¼ä”£¬¼û13.3.1Àï¹ØÓÚ“ÏÔʾ¹ýÆÚʱ¼ä”µÄ˵Ã÷£©¿ÉÓÉÔ´·þÎñÆ÷ÀûÓÓExpires”Í·Óò£¨²Î¼û14.21½Ú£©Ö¸¶¨¡£ »òÕߣ¬ËüÒ²¿ÉÒÔÔÚÏìÓ¦ÀïÀûÓÃmax-age»º´æ¿ØÖÆÖ¸ÁîÖ¸¶¨¡£µ±max-age»º´æ¿ØÖÆÖ¸Áî³öÏÖÔÚÒ»¸ö»º´æµÄÏìÓ¦ÀïµÄʱºò£¬Èç¹û´Ë»º´æµÄÏìÓ¦µ±Ç°ÄêÁ䣨current age£¬Òë×¢£º¼û13.2.3½Ú¹ØÓÚcurrent ageµÄ¶¨Ò壩±È¼ÙÈçÒ»¸öеÄÇëÇó´ËʱȥÇëÇóÄǸö×ÊÔ´¶øµÃµ½ÏìÓ¦ÀïµÄageÖµ£¨ÒÔÃëΪµ¥Î»£©Òª´ó£¬ÄÇô´Ë»º´æµÄÏìÓ¦¾ÍÊdz¾ɵģ¨stale£©¡£¶ÔÔÚÒ»¸öÏìÓ¦ÀïÓ¦ÓÃmax-age»º´æ¿ØÖÆÖ¸ÁîÒâζ×Å´ËÏìÓ¦Êǿɻº´æµÄ£¨Ò²¾ÍÊÇ˵“¹«ÓеĔ£©³ý·Ç¸ü¶àÆäËûµÄ¾ßÓÐÏÞÖÆÐԵĻº´æ¿ØÖÆÖ¸Áî³öÏÖÔÚÏìÓ¦Àï¡£

ÈôÏìӦͬʱº¬ÓÐExpiresÍ·ÓòºÍmax-age»º´æ¿ØÖÆÖ¸ÁÄÇômax-age»º´æ¿ØÖÆÖ¸ÁîÓ¦¸Ã¸²¸ÇExpiresÍ·Óò£¬¼´Ê¹ExpiresÍ·Óò¸ü¾ßÏÞÖÆÐÔ¡£´Ë¹æÔòÔÊÐíÔ´·þÎñÆ÷¶ÔÒ»¸ö¸ø¶¨µÄÏìÓ¦Ìṩһ¸ö¸ü³¤µÄ¹ýÆÚʱ¼ä¸øHTTP/1.1»º´æ£¨»òÒÔºóµÄ°æ±¾£©£¬Õâ¶Ô±ÈHTTP/1.0»º´æÀ´Ëµ¡£Õâ¸ö¹æÔò¿ÉÄÜ»áºÜÓÐÓã¬Èç¹ûij¸öHTTP/1.0»º´æ²»ºÏÊʵؼÆËãÁËÄêÁä»ò¹ýÆÚʱ¼äÓÉÓÚ²»Í¬²½µÄʱÖÓ¡£

Ðí¶àHTTP/1.0»º´æÊµÏÖ¿ÉÄÜ»á°ÑÏìÓ¦ÀïСÓÚ»òµÈÓÚ¸ÃÏìÓ¦ÀïDateÍ·ÓòÖµµÄExpiresÍ·ÓòÖµ¿´³ÉÓë“no-cache”»º´æÏìÓ¦¿ØÖÆÖ¸ÁCache-Control response directive£©µÈЧ¡£Èç¹ûÒ»¸öHTTP/1.1»º´æ½ÓÊÕµ½ÕâÑùÒ»¸öÏìÓ¦£¬²¢ÇÒ´ËÏìӦûÓаüº¬Ò»¸öCache-ControlÍ·Óò£¬ËüÓ¦¸Ã°Ñ´ËÏìÓ¦¿´³ÉÒ»¸ö²»ÄÜ»º´æµÄ£¬ÕâÊÇΪÁ˱£³ÖºÍHTTP/1.0·þÎñÆ÷¼æÈÝ¡£ 

×¢Ò⣺һ¸öÔ´·þÎñÆ÷¿ÉÄÜÏ£Íû°ÑÒ»¸öÏà¶ÔеÄHTTP»º´æ¿ØÖÆÌØÐÔ£¬ÀýÈç“private”»º´æ¿ØÖÆÖ¸ÁÓÃÔÚÒ»¸ö´æÓоɰ汾»º´æµÄÍøÂçÉÏ£¬¶øÇҴ˾ɰ汾»º´æ²»ÄÜÀí½â´ËÌØÐÔ¡£Ô´·þÎñÆ÷Ó¦¸ÃÐèÒª°ÑÐÂÌØÐÔºÍÏìÓ¦ÀïֵСÓÚ»òµÈÓÚDateÖµµÄExpiresÍ·ÓòÁªºÏÆðÀ´£¬ÕâÑùÒÔ±ã·ÀÖ¹¾É°æ±¾µÄ»º´æ²»ºÏÊʵı£´æ´ËÏìÓ¦¡£

s-maxage

   Èç¹ûÒ»¸öÏìÓ¦°üº¬Ò»¸ös-maxage»º´æ¿ØÖÆÖ¸ÁÄÇô¶ÔÓÚÒ»¸ö¹²Ïí»º´æ£¨²»ÄܶÔ˽Óлº´æ£©À´Ëµ£¬s-maxageÖ¸¶¨µÄÖµ½«»á¸²¸Çmax-age»º´æ¿ØÖÆÖ¸Áî»òExpiresÍ·Óò¡£s-maxage»º´æ¿ØÖÆÖ¸ÁîÕÕÑùÒâÖ¸proxy-revalidate»º´æ¿ØÖÆÖ¸Á¼û14.9.4½Ú£©µÄÓïÒ壬Ҳ¾ÍÊÇ˵£¬´Ë¹²Ïí»º´æ²»ÄÜÀûÓô˻º´æÏîÔÚËü±ä¾Éºó£¬ÔÚûÓÐͨ¹ýÔ´·þÎñÆ÷Ê×ÏÈÖØÑéÖ¤ËüµÄÇé¿öÏ£¬È¥ÏìÓ¦ºóÐøµÄÇëÇó¡£s-maxage»º´æ¿ØÖÆÖ¸Áî×ÜÊDZ»Ë½Óлº´æºöÂÔ¡£

×¢£º´ó¶àÊý²»×ñÑ­´Ë¹æ·¶µÄÀϰ汾»º´æÃ»ÓÐʵÏÖÈκλº´æ¿ØÖÆÖ¸Áî¡£ Ò»¸öÔ´·þÎñÆ÷Èç¹ûÏ£ÍûÀûÓÃÒ»¸ö»º´æ¿ØÖÆÖ¸ÁîÈ¥ÏÞÖÆ£¨µ«²»ÄÜ×èÖ¹£©×ñÑ­HTTP/1.1µÄ»º´æÈ¥½øÐлº´æ´¦Àí£¬ÄÇôËü¿ÉÄÜ»á²ÉÓÃmax-age¿ØÖÆÖ¸ÁîÈ¥¸²¸ÇExpiresÍ·Óò£¬²¢ÇÒËü»á³ÐÈÏHTTP/1.1ÒÔǰ°æ±¾µÄ»º´æ²»»áÈ¥¹Û²ìmax-age»º´æ¿ØÖÆÖ¸Áî¡£

ÆäËü»º´æ¿ØÖÆÖ¸ÁîÔÊÐíÒ»¸öÓû§´úÀí£¨user agent£©È¥¸Ä±ä»ù±¾µÄ¹ýÆÚ»úÖÆ¡£ÕâЩָÁî¿ÉÄܻᱻָ¶¨ÔÚÇëÇóÀ

max-age

  ±íÃ÷¿Í»§¶ËÔ¸½ÓÊÜÒ»¸öÕâÑùÒ»¸öÏìÓ¦£¬´ËÏìÓ¦µÄÄêÁä²»´óÓÚ¿Í»§¶ËÇëÇóÀïmax-ageÖ¸¶¨Ê±¼ä£¨ÒÔÃëΪµ¥Î»£©£¨Òë×¢£ºÈç¹û´óÓڵϰ£¬±íÃ÷´ËÏìÓ¦Êdz¾ɵģ©¡£³ý·Çmax-stale»º´æ¿ØÖÆÖ¸ÁîÒ²°üº¬ÔÚÏìÓ¦À·ñÔò¿Í»§¶ËÊDz»ÄܽÓÊÕÒ»¸ö³Â¾ÉÏìÓ¦µÄ¡£

min-fresh

±íÃ÷¿Í»§¶ËÔ¸½ÓÊÜÒ»¸öÕâÑùµÄÏìÓ¦£¬Æä±£ÏÊÊÙÃü²»Ð¡ÓÚÆäÏìÓ¦µ±Ç°ÄêÁä(Òë×¢£ºcurrent age£¬¼û13.2.3½Ú¹ØÓÚcurrent_ageµÄ¶¨Òå)Óë¿Í»§¶ËÇëÇóÀïµÄmin-freshÖ¸¶¨Ê±¼äÖ®ºÍ£¨ÒÔÃëΪµ¥Î»£©¡£Ò²¾ÍÊÇ˵£¬¿Í»§¶ËÏëÒªÒ»¸öÏìÓ¦ÖÁÉÙÔÚmin-freshÖ¸¶¨µÄʱ¼äÄÚÊDZ£Ïʵġ£

max-stale

  ±íÃ÷¿Í»§¶ËÔ¸½ÓÊÜÒѾ­¹ýÆÚµÄÏìÓ¦¡£ Èô¿Í»§¶ËÇëÇóÀïΪmax-ageÖ¸¶¨ÁËÒ»¸öÖµ£¬Ôò±íÃ÷¿Í»§¶ËÔ¸½ÓÊܹýÆÚʱ¼ä²»³¬¹ýËüÔÚmax-staleÀïÖ¸¶¨ÃëÊýµÄÏìÓ¦¡£Èômax-ageδָ¶¨Ò»¸öÖµ£¬Ôò¿Í»§¶ËÔ¸½ÓÊÜÈÎÒâÄêÁäµÄ³Â¾ÉÏìÓ¦¡£

Èç¹û»º´æ·µ»ØÁËÒ»¸ö³Â¾ÉÏìÓ¦£¬ÕâÊÇÓÉÓÚmax-stale»º´æ¿ØÖÆÖ¸Áî³öÏÖÔÚÇëÇóÀ»òÓÉÓÚ´Ë»º´æ±»ÉèÖóÉÄܸ²¸ÇÏìÓ¦µÄ¹ýÆÚʱ¼ä£¬ÄÇô´Ë»º´æ±ØÐë°ÑÒ»¸öWarningÍ·Óò·Å½øÕâ¸ö³Â¾ÉÏìÓ¦À´ËWarningÍ·ÓòÀïÓ¦¸ÃÊÇ110¾¯¸æÂ루ÏìÓ¦Êdz¾ɵģ©¡£

Ò»¸ö»º´æ¿ÉÒÔ±»ÉèÖÃΪ¿ÉÒÔ²»ÐèÒªÑéÖ¤¾Í¿ÉÒÔ·µ»Ø³Â¾ÉµÄÏìÓ¦£¬µ«Õâ²»Ó¦ÓëÈκΓ±ØÐ딵ȼ¶¹ØÓÚ»º´æÑéÖ¤£¨ÀýÈ磬һ¸ö“must-revalidate”»º´æ¿ØÖÆÖ¸ÁµÄÒªÇó³åÍ»¡£

ÈôÐÂÇëÇóÓ뻺´æÏî¶¼°üº¬Ò»¸ö“max-age”»º´æ¿ØÖÆÖ¸ÁÄÇôȡÁ½¸öÖµµÄСÕßȥΪ´ËÇëÇó¾ö¶¨»º´æÏîµÄ±£Ïʳ̶ȡ£

14.9.4»º´æÖØÑéÖ¤ºÍ¼ÓÔØ¿ØÖÆ£¨Cache Revalidation and Reload Controls£©
ÓÐʱ£¬Óû§´úÀí¿ÉÄÜÏ£Íû»ò³öÓÚÐèÒª£¬¼á³ÖÏëÈÃÒ»¸ö»º´æÍ¨¹ýÔ´·þÎñÆ÷È¥ÖØÑéÖ¤ËüµÄ»º´æÏ»òÕß´ÓÔ´·þÎñÆ÷ÄÇÀïÖØÐ¼ÓÔØËüµÄ»º´æÏî¡£end-to-endÖØÑéÖ¤¿ÉÄÜ»áÓбØÒªµÄ£¬Èç¹û»º´æ»òÔ´·þÎñÆ÷ÒѾ­¹À¼ÆÁË»º´æÏìÓ¦£¨cached response£©µÄ¹ýÆÚʱ¼ä¡£end-to-endÖØÔØ¿ÉÄÜÊÇÓбØÒªµÄ£¬Èç¹û»º´æÏîÓÉÓÚijԭÒòÒѾ­±äµÃ³Â¾ÉÁË¡£

end-to-endÖØÑéÖ¤¿ÉÄܱ»ÇëÇ󣺵±¿Í»§¶ËûÓб¾µØ»º´æ¸±±¾£¬ÔÚÕâÖÖÇé¿öÏ£¬ÎÒÃdzÆËüΪ“ûָ¶¨µÄend-to-endÖØÑéÖ¤£¨unspecified end-to-end revalidation£©”£»µ±¿Í»§¶ËÓб¾µØ»º´æ¸±±¾£¬ÔÚÕâÖÖÇé¿öÏ£¬ÎÒÃdzÆËüΪ“Ö¸¶¨µÄend-to-endÖØÑéÖ¤£¨specific end-to-end revalidation£©”¡£

¿Í»§¶ËÄÜÖ¸¶¨ÏÂÃæÈýÖÖ¶¯×÷£¬ÀûÓûº´æ¿ØÖÆÇëÇóÖ¸ÁCache-Control request directives£©£º

end-to-end reload

ÇëÇó°üÀ¨“no-cache”»º´æ¿ØÖÆÖ¸Á»òΪÁËÓëHTTP/1.0¿Í»§¶Ë¼æÈݵēPragma: no-cache”»º´æ¿ØÖÆÖ¸ÁͷÓòÃû²»Äܱ»°üº¬ÔÚno-cache»º´æ¿ØÖÆÖ¸ÁîÀï¡£·þÎñÆ÷²»ÄÜÀûÓÃÒ»¸ö»º´æ¸±±¾À´ÏìÓ¦ÕâÑùÒ»¸öÇëÇó¡£

specific end-to-end revalidation

ÕâÑùµÄÇëÇó°üº¬Ò»¸ö“max-age=0”»º´æ¿ØÖÆÖ¸ÁËüÇ¿ÖÆÃ¿¸ö;¾¶Ô´·þÎñÆ÷µÄ»º´æÈ¥Í¨¹ýÏÂÒ»¸ö»º´æ»ò·þÎñÆ÷À´ÖØÑéÖ¤ËüËùÓµÓеĻº´æÏÈç¹ûÓеϰ£©¡£´Ë³õʼÇëÇó°üº¬Ò»¸ö´øÓпͻ§¶Ëµ±Ç°ÑéÖ¤Æ÷µÄ»º´æÑéÖ¤Ìõ¼þ¡£

unspecified end-to-end revalidation

ÕâÑùµÄÇëÇó°üº¬Ò»¸ö“max-age=0”»º´æ¿ØÖÆÖ¸ÁËüÇ¿ÖÆÃ¿¸ö;¾¶Ô´·þÎñÆ÷µÄ»º´æÈ¥Í¨¹ýÏÂÒ»¸ö»º´æ»ò·þÎñÆ÷À´ÖØÑéÖ¤ËüËùÓµÓеĻº´æÏÈç¹ûÓеϰ£©¡£´Ë³õʼÇëÇó²»°üº¬Ò»¸ö»º´æÑéÖ¤Ìõ¼þ£»ÑØ×Å·¾¶ÉϵĵÚÒ»¸ö»º´æ£¨Èç¹ûÓеϰ£©£¬Èç¹ûËüÓµÓÐÄǸö×ÊÔ´µÄÒ»¸ö»º´æÏÄÇô´Ë»º´æ»á°üº¬Ò»¸ö´øÓлº´æµ±Ç°ÑéÖ¤Æ÷µÄ»º´æÑéÖ¤Ìõ¼þ¡£

max-age

µ±Ò»¸öÖм仺´æ±»Ò»¸ömax-age=0µÄ»º´æ¿ØÖÆÖ¸ÁîÇ¿ÆÈÈ¥ÖØÑéÖ¤ËüµÄ»º´æÏ²¢ÇÒ¿Í»§¶ËÒѾ­ÔÚÇëÇóÀï°üº¬ÁËËüÓµÓеÄÑéÖ¤Æ÷£¬´ËÑéÖ¤Æ÷¿ÉÄܲ»Í¬ÓÚµ±Ç°»º´æÏîÀï±£´æµÄÑéÖ¤Æ÷¡£ÔÚÕâÖÖÇé¿öÏ£¬»º´æÓ¦¸ÃÔÚ²»Ó°ÏìÓïÒå͸Ã÷ÐÔµÄÇé¿öÏÂÀûÓÃÁ½¸öÑéÖ¤Æ÷ÖеÄÒ»¸öÈ¥Ö´ÐÐÇëÇó¡£

È»¶ø£¬ÑéÖ¤Æ÷µÄÑ¡Ôñ¿ÉÄÜ»áÓ°ÏìÐÔÄÜ¡£×îºÃµÄ°ì·¨¶ÔÖм仺´æÀ´Ëµ£¬¾ÍÊǵ±Ö´ÐÐÇëÇóʱÀûÓÃËü×Ô¼ºµÄÑéÖ¤Æ÷¡£Èç¹û·þÎñÆ÷ÒÔ303£¨Ã»Óиı䣩»Ø¸´£¬ÄÇô´Ë»º´æÄÜ·µ»ØÒ»¸öËü×Ô¼ºµÄµ±Ç°ÒѾ­ÑéÖ¤Á˵ĸ±±¾¸ø¿Í»§¶ËͬʱÒÔÒ»¸ö200£¨OK£©×´Ì¬Âë¡£Èç¹û·þÎñÆ÷ÒÔÒ»¸öÐÂʵÌåºÍÒ»¸öÐµĻº´æÑéÖ¤Æ÷À´»Ø¸´ÇëÇó£¬ÄÇô´ËÖм仺´æÄܰѷµ»ØµÄÑéÖ¤Æ÷ͬ¿Í»§¶ËÇëÇóÀïµÄÑéÖ¤Æ÷×÷±È½Ï£¬Õâͨ¹ýÀûÓÃÒ»¸öÇ¿±È½Ï·½·¨¡£Èç¹û¿Í»§¶ËµÄÑéÖ¤Æ÷ºÍÔ´·þÎñÆ÷µÄÏàµÈ£¬ÄÇô´ËÖм仺´æÆ÷Ö»ÊǼòµ¥µÄ·µ»Ø304£¨Ã»Óиı䣩ÏìÓ¦¡£·ñÔò£¬Ëü·µ»ØÒ»¸öеÄʵÌå²¢ÇÒ״̬ÂëÊÇ200µÄÏìÓ¦¡£

Èç¹ûÒ»¸öÇëÇó°üº¬Ò»¸öno-cache»º´æ¿ØÖÆÖ¸ÁÄÇôËü²»Ó¦¸Ãmin-fresh£¬max-stale£¬»òmax-age»º´æ¿ØÖÆÖ¸Áî¡£

only-if-cache

   ÔÚһЩÇé¿öÏ£¬ÀýÈçÔã¸âµÄÍøÂçÁ¬½Ó£¬Ò»¸ö¿Í»§¶Ë¿ÉÄÜÏ£ÍûÒ»¸ö»º´æÖ»·µ»ØËüµ±Ç°±£´æµÄÏìÓ¦£¬²¢ÇÒ²»ÐèҪͨ¹ýÔ´·þÎñÆ÷¶ÔÆä½øÐÐÖØÐ¼ÓÔØ»òÖØÑéÖ¤¡£Èç¹ûÕâÑù×÷¿Í»§¶Ë¿ÉÄÜ»á°üº¬Ò»¸öonly-if-cached»º´æ¿ØÖÆÖ¸ÁîÔÚÇëÇóÀï¡£Èç¹û»º´æ½ÓÊÕÁËÕâÑùµÄÖ¸ÁÄÇôËüÓ¦¸ÃÀûÓÃÒ»¸öÓëÇëÇóËùÒªÇóµÄ»º´æÏîÈ¥ÏìÓ¦£¬»òÕßÒÔ504£¨Íø¹Ø³¬Ê±£©×´Ì¬ÂëÏìÓ¦¡£È»¶ø£¬Èç¹ûÒ»×黺´æ×÷Ϊһ¸öͳһµÄϵͳÀ´²Ù×÷£¬²¢ÇÒÓзdz£ºÃµÄÄÚ²¿Á¬½Ó£¬ÄÇôÕâ¸öÇëÇó¿ÉÄÜ»áת·¢µ½»º´æ×éµÄÄÚ²¿¡£

must-revalidate

   ÓÉÓÚÒ»¸ö»º´æ¿ÉÄܱ»ÉèÖÃÈ¥ºöÂÔ·þÎñÆ÷Ö¸¶¨µÄ¹ýÆÚʱ¼ä£¬²¢ÇÒÓÖÓÉÓÚÒ»¸ö¿Í»§¶ËÇëÇó¿ÉÄܰüº¬Ò»¸ömax-stale»º´æ¿ØÖÆÖ¸ÁËüÖ»ÓÐÒ»¸öСӰÏ죩£¬ËùÒÔ´ËЭÒéÕÕÑù°üº¬Ò»¸öÈÃÔ´·þÎñÆ÷Ç¿ÆÈ»º´æÏî±»ÖØÑéÖ¤µÄ»úÖÆ¡£µ±must-revalidate»º´æ¿ØÖÆÖ¸Áî³öÏÖÔÚÏìÓ¦Àï²¢±»Ò»¸ö»º´æ½ÓÊպ󣬴˻º´æ²»ÄÜÀûÓô˻º´æÏÈç¹ûÔÚËü±äµÃ³Â¾É²¢ÇÒûÓÐͨ¹ýÔ´·þÎñÆ÷¶ÔËü½øÐÐÖØÑéÖ¤µÄÇé¿öÏ£¬È¥ÏìÓ¦Ò»¸öºóÐøµÄÇëÇó¡££¨Ò²¾ÍÊÇ˵£¬Èç¹û£¨»ùÓÚÔ´·þÎñÆ÷µÄExpires»òmax-ageÖµ£©»º´æÏìÓ¦Êdz¾ɵģ¬ÄÇô£¬´Ë»º´æÃ¿´Î±ØÐë½øÐÐend-to-endÖØÑéÖ¤£©

   must-revalidate»º´æ¿ØÖÆÖ¸Áî¶Ôij¸öЭÒéÌØÐԵĿÉÐÅÀµÐÔ²Ù×÷ÒªÓбØÒªÖ§³Ö¡£ÔÚËùÓÐÇé¿öÏ£¬Ò»¸öHTTP/1.1»º´æ±ØÐë×ñÑ­must-revalidate»º´æ¿ØÖÆÖ¸Áî£»ÌØ±ðµØ£¬Èç¹û´Ë»º´æ²»ÄÜÖ±½ÓºÍÔ´·þÎñÆ÷ͨÐÅ£¬ÄÇôËü±ØÐë²úÉúÒ»¸ö504£¨Íø¹Ø³¬Ê±£©ÏìÓ¦¡£

   ·þÎñÆ÷Ó¦¸Ã·¢ËÍmust-revalidate»º´æ¿ØÖÆÖ¸ÁֻÓÐÔÚ¿Í»§¶Ë»ò»º´æ¶ÔÄǸöʵÌåµÄÖØÑéÖ¤ÇëÇóµÄ²Ù×÷ʧ°ÜµÄʱºò£¬ÀýÈçÒ»¸ö²»¶¯ÉùÏ¢µÄûÓÐÖ´ÐеĽðÈÚÊÂÎñ¡£½ÓÊն˲»ÄܲÉÈ¡ÈκÎÎ¥·´´Ë»º´æ¿ØÖÆÖ¸ÁîµÄ×Ô¶¯µÄÐÐΪ£¬²¢ÇÒ²»ÄÜ×Ô¶¯µØÌṩһ¸ö±»ÑéÖ¤ÎÞЧµÄʵÌ帱±¾Èç¹û´Ë¸±±¾Í¨¹ýÔ´·þÎñÆ÷ÖØÑé֤ʧ°Ü£¨Òë×¢£ºÑé֤ʧ°Ü˵Ã÷»º´æÀï±£´æµÄ¸±±¾Í¨¹ýÔ´·þÎñÆ÷ÑéÖ¤ÊÇÎÞЧµÄ£»ÑéÖ¤³É¹¦ËµÃ÷»º´æÀï±£´æµÄ¸±±¾Í¨¹ýÔ´·þÎñÆ÷ÑéÖ¤ÊÇÓÐЧµÄ£¬Ëü¿ÉÒÔÓÃÀ´ÏìÓ¦ºóÐøµÄÇëÇ󣩡£

   ¾¡¹ÜÕâ²»±»ÍƼö£¬Óû§´úÀí£¨user agent£©Èç¹ûÔÚÔã¸âµÄÍøÂçÁ¬½ÓÏÞÖÆÏ£¬¿ÉÄÜ»áÎ¥·´´Ë»º´æ¿ØÖÆÖ¸Áµ«ÊÇ£¬Èç¹ûÕâÑùµÄ»°£¬Ëü±ØÐëÏÔʾµØÈ¥¾¯¸æÓû§ÕâÊÇÒ»¸öûÓÐÑéÖ¤µÄÏìÓ¦£¬¶øÇÒÓû§»§´úÀí»¹Ó¦¸ÃÐèÒªÓû§µÄÈ·ÈÏÐÅÏ¢¡£

proxy-revalidate

   proxy-revalidate»º´æ¿ØÖÆÖ¸ÁîºÍmust-revalidate»º´æ¿ØÖÆÖ¸ÁîÓÐÏàͬµÄÓïÒ壬³ýÁËËü²¢²»ÄÜÓ¦ÓÃÓڷǹ²ÏíµÄÓû§´úÀíµÄ»º´æ¡£ËüÄܱ»ÓÃÓÚÒ»¸öÒѾ­±»ÊÚȨÇëÇóµÄÏìÓ¦£¬È¥ÔÊÐíÓû§µÄ»º´æÄܱ£´æ»òÕß¹ýºóÄÜ·µ»Ø´ËÏìÓ¦¶ø²»ÐèÒªÈ¥ÖØÑéÖ¤Ëü£¨ÒòΪËüÒѾ­±»ÄǸöÓû§ÊÚȨÁËÒ»´Î£©£¬µ«ÊÇ·þÎñÓÚ¶à¸öÓû§µÄ´úÀíÈÔÈ»ÐèҪÿ´ÎÈ¥ÖØÑéÖ¤Ëü£¨ÕâÊÇΪÁ˱£Ö¤Ã¿¸öÓû§ÒѾ­±»ÊÚȨ£©¡£×¢ÒâÕâÑùµÄÊÚȨÏìÓ¦ÕÕÑùÐèÒªpublic»º´æ¿ØÖÆÖ¸ÁÕâÊÇΪÁËÔÊÐíËûÃÇÍêÈ«Äܱ»»º´æ¡£

14.9.5 No-Transform»º´æ¿ØÖÆÖ¸Áî
no-ransform

Öм仺´æ£¨´úÀí£©µÄʵÏÖÕßÃÇÒѾ­·¢ÏÖת»»Ä³¸öʵÌåÖ÷ÌåµÄýÌåÀàÐÍתÊǺÜÓÐÓõġ£Ò»¸ö·Ç͸Ã÷´úÀí¿ÉÄÜ£¬ÀýÈ磬»áÔÚ²»Í¬Í¼Ïñ¸ñʽ֮¼ä½øÐÐת»»£¬ÕâÊÇΪÁ˽ÚÔ¼¿Õ¼ä»òÔÚµÍËÙµÄÁ¬½ÓÉϼõÉÙͨÐÅÁ÷Á¿¡£

È»¶ø£¬µ±ÕâЩת»»Ó¦ÓÃÓÚijЩӦÓõÄʵÌåÖ÷Ìåʱ£¬»áÒý·¢ÑÏÖØµÄÔË×÷·½ÃæµÄÎÊÌâ¡£±ÈÈ磬ҽѧͼÏóÓ¦Ó㬿ÆÑ§Êý¾Ý·ÖÎöºÍ¶Ëµ½¶ËÈÏÖ¤¶¼ÒÀÀµÓÚ½ÓÊÕµ½µÄʵÌåÖ÷ÌåÓëԭʵÌåÖ÷ÌåÒ»±ÈÒ»µÄ¹ØÏµ¡£

ËùÒÔ£¬Èç¹ûÏûÏ¢°üÀ¨ÁËno-ransform»º´æ¿ØÖÆÖ¸Á ÄÇôÖм仺´æ»ò´úÀí¾Í²»Ó¦¸Ã¸Ä±ä13.5.2½ÚÖÐÁгöµÄÍ·Óò¡£ÕâÒâζ×Å»º´æ»ò´úÀí²»µÃ¸Ä±äÓÉÕâЩ±¨Í·¶¨ÒåµÄʵÌåÖ÷ÌåµÄÈκη½Ã棬°üÀ¨ÊµÌåÖ÷Ìå±¾ÉíµÄÖµ¡£

14.9.6»º´æ¿ØÖÆÀ©Õ¹£¨Cache control Extendions£©
Cache-ControlÍ·Óò¿Éͨ¹ýÒ»¸ö»ò¶à¸öcache-extension±ê¼ÇµÄʹÓÃÀ´ÊµÏÖÆäÀ©Õ¹¡£ÆäÖÐÿһ±ê¼Ç¶¼¸³ÓèÒ»¿ÉÑ¡µÄÖµ¡£ ÐÅÏ¢À©Õ¹£¨ÄÇЩÎÞÐë¸Ä±ä»º´æ»úÐÐΪµÄ£©¿ÉÒÔ²»¾­¸Ä±äÆäËü»º´æ¿ØÖÆÖ¸ÁîµÄÓïÒå¶øÌí¼Ó¡£ÐÐΪÀ©Õ¹ÊÇͨ¹ýÐÞ¸ÄÏÖÓлº´æ¿ØÖÆÖ¸ÁîµÄ»ù±¾ÐÐΪÀ´ÊµÏֵġ£ лº´æ¿ØÖÆÖ¸ÁîÓë±ê×¼»º´æ¿ØÖÆÖ¸Áî¶¼±»Ìṩ£¬ÒÔÖÁÓÚ²»Àí½âлº´æ¿ØÖÆÖ¸ÁîµÄÓ¦ÓóÌÐò»áȱʡµØ²ÉÓñê×¼»º´æ¿ØÖÆÖ¸Áî¹æ¶¨µÄÐÐΪ£¬¶øÄÇЩÀí½âÐÂÖ¸ÁîµÄÓ¦ÓóÌÐòÔò½«Æä¿´×öÐÞ¸ÄÁ˱ê×¼»º´æ¿ØÖÆÖ¸ÁîµÄÒªÇó¡£ÕâÑù£¬»º´æ¿ØÖÆÖ¸ÁîµÄÀ©Õ¹¿ÉÒÔÔÚÎÞÐë¸Ä±ä»ù±¾Ð­ÒéµÄÇé¿öϾÍÄܹ»ÊµÏÖ¡£

ÕâÒ»À©Õ¹»úÖÆÒÀÀµÓÚÕâÑùÒ»¸öHTTP»º´æ£¬´Ë»º´æ×ñ´ÓËùÓлº´æ¿ØÖÆÖ¸ÁîµÄ»º´æ£¬×ñ´ÓijЩÀ©Õ¹£¬¶øÇÒ»áºöÂÔËùÓÐËü²»ÄÜÀí½âµÄ»º´æ¿ØÖÆÖ¸Áî¡£

ÀýÈ磬¿¼ÂÇÒ»¸ö¼ÙÏëµÄÃûΪ“community”µÄÐµĻº´æÏìÓ¦¿ØÖÆÖ¸Á´ËÖ¸Áî±»¿´³ÉÊǶÔprivate»º´æ¿ØÖÆÖ¸ÁîµÄÐÞÊΡ£ÎÒÃǶ¨ÒåÕâ¸öÐµĻº´æ¿ØÖÆÖ¸ÁîÒÔ±íÃ÷£º³ýÁ˷ǹ²Ïí»º´æÄܱ£´æ´ËÏìÓ¦Ö®Í⣬»¹ÓÐÔÚcommunityÀïÒÔËüÖµÃüÃûµÄÉçÇø£¬Ö»ÓÐÔÚ´ËÉçÇøÀïµÄ³ÉÔ±Ëù¹²ÏíµÄÈκλº´æ²ÅÄܱ£´æ´ËÏìÓ¦¡£ÀýÈ磬Èç¹ûÒ»¸öÔ´·þÎñÆ÷Ï£ÍûÔÊÐíUCIÉçÇøÀïµÄ³ÉÔ±ÔÚËûÃǹ²Ïí»º´æÀï¿ÉÒÔʹÓÃÒ»¸ö˽ÓÐÏìÓ¦£¬ÄÇô´ËÔ´·þÎñÆ÷Ó¦¸Ã°üº¬£º

Cache-Control: private, commuity="UCI"

Ò»¸ö¼ûµ½´ËÍ·ÓòµÄ»º´æ½«»áÕýÈ·µÄ²Ù×÷£¬¼´Ê¹´Ë»º´æ²»ÄÜÀí½âÕâ¸öcommunity»º´æÀ©Õ¹£¬ÒòΪ»º´æÕÕÑùÄÜ¿´µ½²¢ÇÒÄÜÀí½âprivate»º´æ¿ØÖÆÖ¸ÁîËùÒÔÕâÑùÄܵ¼ÖÂȱʡµÄ°²È«ÐÐΪ¡£

14.10 Connection
Connection³£ÓÃÍ·ÓòÔÊÐí·¢ËÍÕßÖ¸¶¨Ä³Ò»Ìض¨Á¬½ÓÖеÄÑ¡ÏÕâЩѡÏî²»µÃÓÉ´úÀí£¨proxy£©ÔÚÒÔºóµÄÁ¬½ÓÖд«ËÍ¡£

ConnectionÍ·Óò×ñÑ­ÈçÏÂÓï·¨£º

   Connection = “Connection” “:” 1#(connection-token)

   connection-token = token

HTTP/1.1´úÀí±ØÐëÔÚת·¢±¨ÎÄ֮ǰ½âÎöConnectionÍ·Óò£¬È»ºóÕë¶Ô´ËÍ·ÓòÖÐÿһ¸öconnection-token£¬´Ó±¨ÎÄÖÐÒÆ¿ªËùÓÐÓëconnection-tokenÀïͬÃûµÄÍ·Óò¡£ Á¬½ÓÑ¡ÏîÊÇÓÉConnectÍ·ÓòÖеÄconnection-tokenÖ¸Ã÷µÄ£¬¶ø·ÇÈκζÔÓ¦µÄ¸½¼ÓµÄÍ·Óò£¬ÒòΪÕâЩ¸½¼ÓÍ·ÓòÔÚȱÉÙÓëÁ¬½ÓÑ¡ÏîÏà¹ØµÄ²ÎÊýʱ¿ÉÄÜÎÞ·¨±»´«ËÍ¡£

ConnectÍ·ÓòÀïÁгöµÄÏûϢͷÓò²»µÃ°üº¬end-to-endÍ·Óò£¬ÀýÈçCache-ControlÍ·Óò¡£

HTTP/1.1¶¨ÒåÁË"close"Á¬½ÓÑ¡ÏÕâÊÇΪÁËÈ÷¢ËÍÕß±íÃ÷ÔÚÍê³ÉÏìÓ¦ºóÁ¬½Ó½«±»¹Ø±Õ¡£

ÀýÈç

Connection£ºclose

±íÃ÷ÎÞÂÛÊdzöÏÖÔÚÇëÇó»òÏìÓ¦µÄÍ·ÓòÖУ¬¶¼±íÃ÷Á¬½Ó²»Ó¦±»ÊÓΪÔÚÍê³ÉÏÖÓÐÇëÇó/ÏìÓ¦ºóÊÇ“³ÖÐøµÄ£¨persistent£©”£¨²Î¼û8.1½Ú£©¡£

²»Ö§³Ö³ÖÐøÁ¬½ÓµÄHTTP/1.1Ó¦ÓóÌÐò±ØÐëÔÚÿһÏûÏ¢Öж¼¼ÓÉÏ"close"Á¬½ÓÑ¡Ïî¡£

½ÓÊÕµ½º¬ÓÐConnectÍ·ÓòµÄHTTP/1.0£¨»ò¸üµÍ°æ±¾£©ÏûÏ¢µÄϵͳ±ØÐëҪΪÿһ¸öconnection-tokenȥɾ³ý»òºöÂÔÏûÏ¢ÖÐÓë֮ͬÃûµÄÍ·Óò¡£ÕâÑù×ö±ÜÃâÁËÔçÓÚHTTP/1.1°æ±¾µÄ´úÀí´íÎóµØ×ª·¢ÕâЩͷÓò¡£

14.11 Content-Encoding
“Content-Encoding”ʵÌåÍ·ÓòÊǶÔýÌåÀàÐ͵ÄÐÞÊΡ£µ±´ËÍ·Óò³öÏÖʱ£¬ÆäÖµ±íÃ÷¶ÔʵÌåÖ÷Ìå²ÉÓÃÁ˺ÎÖÖµÄÄÚÈݱàÂ룬´Ó¶ø¿ÉÒÔÖªµÀ²ÉÓúÎÖÖ½âÂë»úÖÆÒÔ»ñÈ¡Content-TypeÍ·ÓòÖÐÖ¸³öµÄýÌåÀàÐÍ¡£Content-EncodingÍ·ÓòÖ÷ҪĿµÄÊÇ¿ÉÒÔÔÚ²»¶ªÊ§Ï²ãýÌåÀàÐ͵ÄÉí·Ý϶ÔÎĵµ½øÐÐѹËõ¡£

Content-Encoding = "Content - Encoding" ":" 1#content-coding

ÄÚÈݱàÂëÔÚ3.5½ÚÀﶨÒå¡£ÏÂÃæÊÇÒ»¸öÓ¦ÓõÄÀý×Ó£º

Content-Encoding£ºgzip

ÄÚÈݱàÂ루content-coding£©ÊÇÇëÇóURIÖ¸¶¨ÊµÌåµÄÌØÐÔ¡£Í¨³££¬ÊµÌåÖ÷ÌåÒÔÄÚÈݱàÂ루content-coding£©µÄ·½Ê½´æ´¢£¬È»¶øÖ»ÓÐÔÚ´ËʵÌåÖ÷Ìå±»³ÊÏÖ¸øÓû§Ö®Ç°²ÅÄܱ»½âÂ롣Ȼ¶ø£¬·Ç͸Ã÷´úÀí¿ÉÄÜ»á°ÑʵÌåÖ÷ÌåµÄÄÚÈݱàÂ루content-coding£©¸Ä³É½ÓÊÕ¶ËÄÜÀí½âµÄÄÚÈݱàÂ루content-coding£©£¬³ý·Ç“no-transform”»º´æ¿ØÖÆÖ¸Áî³öÏÖÔÚÏûÏ¢Àï¡£

Èç¹ûʵÌåµÄÄÚÈݱàÂë²»ÊÇ“identity”£¬ÄÇô´ËÏìÓ¦±ØÐë°üº¬Ò»¸öContent-EncodingʵÌåÍ·Óò£¨¼û14.11½Ú£©£¬´ËÍ·Óò±ØÐëÁгö²»ÊÇidentityµÄÄÚÈݱàÂë¡£

ÈôʵÌåµÄÄÚÈݱàÂ루content-coding£©ÊÇÒ»¸ö²»±»Ô´·þÎñÆ÷½ÓÊܵÄÇëÇóÏûÏ¢£¬ÔòÏìÓ¦±ØÐëÒÔ415״̬ÂëÏìÓ¦£¨²»Ö§³ÖµÄýÌåÀàÐÍ£©¡£

ÈôʵÌå²ÉÓöàÖÖ±àÂ룬ÔòÄÚÈݱàÂë±ØÐëÔÚContent-EncdoingÍ·ÓòÀïÁгö£¬¶øÇÒ»¹±ØÐë°´ËûÃDZ»±àÂëµÄ˳ÐòÁгö¡£¶îÍâµÄ¹ØÓÚ±àÂë²ÎÊýµÄÐÅÏ¢¿ÉÄÜ»áÔÚÆäËüµÄʵÌåÍ·ÓòÀïÌṩ£¬ÕâÔڴ˹淶ÀïûÓж¨Òå¡£

14.12 Content-Language
Content-LanguageʵÌåÍ·ÓòÃèÊöÁËʵÌåÃæÏòÓû§µÄ×ÔÈ»ÓïÑÔ¡£Çë×¢Ò⣬Õâ²»Ò»¶¨µÈͬÓÚʵÌåÖ÷ÌåÖÐÓõ½µÄËùÓÐÓïÑÔ¡£

 Content-Language = “Content-Language” “:” 1#language-tag

ÓïÑÔ±êÇ©ÓÉ3.10½Ú¶¨Òå¡£Content-LanguageÍ·ÓòµÄÖ÷ҪĿµÄÔÚÓÚÈÃÓû§¸ù¾Ý×Ô¼ºÏ²°®µÄÓïÑÔÀ´Ê¶±ðºÍÇø·ÖʵÌå¡£ÕâÑù£¬Èç¹ûʵÌåÖ÷ÌåµÄÄÚÈÝÊÇÃæÏòµ¤ÂóÓïÑÔµÄÓû§£¬ÄÇôÏÂÃæµÄÍ·ÓòÊÇÊʺϵģº

Content-Language: da

ÈôδָÃ÷Content-LanguageÍ·Óò£¬ÄÇôȱʡÊÇÄÚÈÝÊÇÖ§³ÖËùÓв»Í¬ÓïÑÔµÄÓû§¡£Õâ¼È¿ÉÄÜÒâζ×Å·¢ËÍÕßÈÏΪʵÌåÖ÷ÌåµÄÄÚÈÝÓëÈÎÒâ×ÔÈ»ÓïÑÔÎ޹أ¬Ò²¿ÉÄÜ·¢ËÍÕß²»Öª´ËÄÚÈݸÃÃæÏòºÎÖÖÓïÑÔ¡£

ÒªÃæÏò¶àÖÖÌýÖÚ£¬ÔÚContent-LanguageÍ·ÓòÀï¿ÉÁгö¶àÖÖÓïÑÔ¡£ÀýÈ磬ͬʱÓÃëÀïÍÁÓïºÍÓ¢Óï·¢ÐГTreaty of Waitangi”¾Í¿ÉÒÔÓÃÏÂÃæ±íʾ£º

Content-Language: mi,en

È»¶ø£¬ÔÚʵÌåÖÐÓжàÖÖÓïÑÔ²¢²»´ú±í´ËʵÌåÒ»¶¨ÊÇΪ¶à¸ö¹ú¼ÒÓïÑÔµÄÓû§×¼±¸µÄ¡£±ÈÈç¡¶³õѧÀ­¶¡ÎÄ¡·Ö®ÀàµÄÓïÑÔÆôÃɽ̳̣¬ÏÔÈ»ÊÇÕë¶ÔÓ¢ÓïÓû§µÄ¡£ÕâÀºÏÊʵÄContent-LanguageÍ·ÓòÀïÓ¦Ö»°üÀ¨“en”¡£

Content-Language¿ÉÓ¦ÓÃÓÚÈÎÒâýÌåÀàÐÍ -- Ëü²»ÏÞÓÚÎı¾Ê½µÄÎĵµ¡£

14.13 Content-Length
Content-LengthʵÌåÍ·Óò°´Ê®½øÖÆ»ò°Ëλ×Ö½ÚÊýÖ¸Ã÷ÁË·¢¸ø¸ø½ÓÊÕÕßµÄʵÌåÖ÷ÌåµÄ´óС£¬»òÊÇÔÚʹÓÃHEAD·½·¨µÄÇé¿öÏ£¬Ö¸Ã÷ÈôÇëÇóΪGET·½·¨Ê±Ó¦¸Ã·¢Ë͵ÄʵÌåÖ÷ÌåµÄ´óС¡£

   Content-Length = “Content-Length” “:” 1*DIGIT

ʾÀý£º

Content-Length: 3495

³ý·Ç±»4.4½ÚÀï¹æ¶¨µÄ¹æÔò½ûÖ¹£¬·ñÔòÓ¦ÓóÌÐòÓ¦¸ÃÀûÓôËÍ·ÓòÖ¸Ã÷ÏûÏ¢Ö÷Ì壨message-body£©µÄ´«Ê䳤¶È¡£

ÈκδóÓÚ»òµÈÓÚ0µÄContent-Length¾ùΪÓÐЧֵ¡£ 4.4½ÚÃèÊöÁËÈçºÎÅжÏÏûÏ¢Ö÷ÌåµÄ³¤¶È£¬Èç¹ûÒ»¸öContent-LengthûÓÐÔÚÏûÏ¢Àï¸ø¶¨¡£

Çë×¢Òâ´ËÍ·ÓòµÄº¬ÒåÓëMIMEÖеĹØÓÚ´ËÍ·ÓòµÄ¶¨ÒåÓкܴóµÄ²»Í¬£¬MIMEÖУ¬ËüÔÚcontent-typeÀàÐÍΪ“message/external-body”µÄÏûÏ¢ÀïÊÇ¿ÉÑ¡µÄ¡£ÔÚHTTPÖУ¬³ý·Ç±»4.4½ÚÀﶨÒåµÄ¹æÔò±»½ûÓ㬷ñÔòÒ»µ©ÏûÏ¢µÄ³¤¶ÈÒªÔÚ´«ËÍǰ±»È·¶¨£¬¾ÍÓ¦·¢ËÍ´ËÍ·Óò¡£

14.14 Content-Location
Content-LocationʵÌåÍ·Óò¿ÉÓÃÀ´ÎªÏûÏ¢ÀïµÄʵÌåÌṩ¶ÔÓ¦×ÊÔ´µÄλÖ㬵±´ËʵÌåµÄ·ÃÎÊλÖúÍÇëÇóURI²»ÊÇͬһλÖÃʱ¡£Ò»¸ö·þÎñÆ÷Ó¦¸ÃΪÏìӦʵÌåµÄ±äÁ¿£¨variant£¬Òë×¢£º¼û1.3½Ú ÊõÓÌṩһ¸öContent-LocationÍ·Óò£»ÓÈÆäÊÇÔÚ×ÊÔ´Óжà¸ö¶ÔÓ¦µÄʵÌåʱ£¬²¢ÇÒÕâЩʵÌå»áÓи÷×ÔµÄλÖ㬿ÉÒÔͨ¹ýÕâЩλÖõ¥¶ÀµØ·ÃÎʵ½¸÷¸öʵÌ壬Õâʱ·þÎñÆ÷Ó¦¸ÃΪһ¸öÌØ¶¨µÄ±äÁ¿£¨variant£©Ìṩһ¸öContent-LocationÍ·Óò¡£

   Content – Location = “Content-Location” “:” (absoluteURI | relativeURI)

Content-LocationµÄֵͬÑùΪʵÌ嶨ÒåÁË»ùURI£¨base URI£©¡£

Content-LocationµÄÖµ²¢²»ÄÜ×÷ΪԴÇëÇóURIµÄÌæ´úÎËüÖ»ÄÜÊdzÂÊöÁËÇëÇóʱ¶ÔÓ¦µÄÌØ¶¨ÊµÌå×ÊÔ´µÄλÖ᣽«À´µÄÇëÇóÒ²Ðí»áÓÃContent-LocationÀïµÄURI×÷ΪÇëÇóURI£¬Èç¹ûÇëÇóÆÚÍûÖ¸¶¨ÄǸöÌØ¶¨ÊµÌå×ÊÔ´µÄ»°¡£

Ò»Èç¹ûÒ»¸öʵÌ庬ÓÐÒ»¸öContent-LocationÍ·Óò£¬²¢ÇÒ´ËÍ·ÓòÀïµÄURI²»Í¬ÓÚ»ñµÃ´ËʵÌåURI£¬ÄÇô»º´æ²»»áÀûÓôËʵÌåÈ¥ÏìӦʹÓÃÁËContent-LocatonÀïURIµÄºóÐøÇëÇó¡£È»¶ø£¬Content-LocationÄܱ»ÓÃÓÚÇø·Öͬһ¸öÇëÇó×ÊÔ´µÄ¶à¸öʵÌ壬ÕâÔÚ13.6½ÚÀïÃèÊöÁË¡£

ÈôContent-LocationÓµÓеÄÊÇÏà¶ÔURI£¨relative URI£©£¬Ôò´ËÏà¶ÔURI£¨relative URI£©ÊÇÏà¶ÔÓÚÇëÇóURIÀ´½âÎöµÄ¡£

PUT»òPOSTÇëÇóÖк¬ÓÐContent-LocationÍ·ÓòÊÇûÓиø³ö¶¨ÒåµÄ£»·þÎñÆ÷¿É×ÔÓɺöÂÔËü¡£

14.15 Content-MD5
ÈçRFC 1864[23]ÖÐËù¶¨ÒåµÄ£¬Content-MD5ʵÌåÍ·Óòº¬ÓеÄÊÇʵÌåÖ÷ÌåµÄMD5ÕªÒª£¬ÕâÊÇΪÁ˸øÒ»¸öend-to-endÏûÏ¢µÄʵÌåÖ÷ÌåµÄÌṩÍêÕûÐÔ¼ì²â¡££¨×¢£ºMICÓÐÀûÓÚ¼ì²âʵÌåÖ÷Ìå´«ËÍÖеÄż·¢ÐԵĸ͝£¬µ«²»Ò»¶¨ÄÜ·À·¶¶ñÒâÏ®»÷¡££©

Content-MD5 = "Content-MD5" ":" md5-digest

MD5-digest=< ÓÉRFC 1864 ¶¨ÒåµÄbase64µÄ128λMD5ÕªÒª>

Content-MD5Í·Óò¿ÉÓÉÔ´·þÎñÆ÷»ò¿Í»§¶ËÉú³É£¬ÓÃ×÷ʵÌåÖ÷ÌåµÄÍêÕûÐÔ¼ìÑé¡£Ö»ÓÐÔ´·þÎñÆ÷»ò¿Í»§¶Ë¿ÉÉú³ÉContent-MD5Í·Óò£»²»µÃÓÉ´úÀí·þÎñÆ÷ºÍÍø¹ØÉú³É£¬·ñÔò»áÓÐã£ÓÚÆä×÷Ϊ¶Ëµ½¶ËÍêÕûÐÔ¼ìÑéµÄ¼ÛÖµ¡£ÈκÎʵÌåÕýÖ÷ÌåµÄ½ÓÊÕÕߣ¬°üÀ¨´úÀíºÍÍø¹Ø£¬¶¼¿É¼ì²é´ËÍ·ÓòÀïµÄÕªÒªÖµÓë½ÓÊÕµ½µÄʵÌåÖ÷ÌåµÄÕªÒªÖµÊÇ·ñÏà·û¡£

MD5ÕªÒªµÄ¼ÆËã»ùÓÚʵÌåÖ÷ÌåµÄÄÚÈÝ£¬°üÀ¨ÈκÎÓ¦ÓõÄÄÚÈݱàÂ루content-coding£©£¬µ«²»°üÀ¨Ó¦ÓÃÓÚÏûÏ¢Ö÷ÌåµÄÈκδ«Êä±àÂë¡£Èô½ÓÊÕµ½µÄÏûÏ¢¾ßÓд«Êä±àÂ룬ÄÇô´«Êä±àÂë±ØÐëÔÚ¼ìÑéContent-MD5ÖµÓë½ÓÊÕµ½µÄʵÌå֮ǰ±»½â³ý¡£

ÕâÑùÔì³ÉµÄºó¹ûÊÇ£ºÕªÒªÍêÈ«°´ÕÕʵÌåÖ÷Ì壨entity-body£©Èôδ¾­´«Êä±àÂ루transfer encoding£©±àÂë¶ø±»ÒÔ·¢³öµÄ˳Ðò½øÐÐÖð×Ö½Ú¼ÆËãµÃµ½µÄ¡£

HTTP ½«RFC 1864ÍØ¿íµ½ÔÊÐí¶ÔMIME¸´ºÏýÌåÀàÐÍ£¨Èçmultipart/*,message/RFC822£©¼ÆËãÕªÒª£¬µ«Õâ²¢²»¸Ä±äÈçǰËùÊöµÄÕªÒª¼ÆËã·½·¨¡£

Óɴ˲úÉúÁËһϵÁÐÓ°Ïì¡£¸´ºÏýÌåÀàÐ͵ÄʵÌåÖ÷Ìå¿ÉÄܰüº¬Ðí¶àbody-part£¬Ã¿Ò»¸öbody-part¶¼ÓÐËü×Ô¼ºµÄMIMEºÍHTTPÍ·Óò£¨°üÀ¨Content-MD5£¬Content-Transfer-Encoding£¬ºÍContent-EncodingÍ·Óò£©£¬Èç¹ûÒ»¸öbody-partÓÐÒ»¸öContent-Transfer-Encoding»òContent-EncodingÍ·Óò£¬ÄÇôӦ¸ÃÈÏΪ´Ëbody-partµÄÄÚÈÝÒѾ­Ó¦ÓÃÁ˴˱àÂ룬²¢ÇÒÈÏΪ´Ëbody-part±»°üº¬ÔÚContent-MD5µÄÕªÒªÀïÊÇÔÚÓ¦ÓÃÁ˴˱àÂëÖ®ºó¡£Transfer-EncodingÍ·Óò²»ÐèÒª³öÏÖÔÚbody-partÀï¡£

£¬

²»¿ÉÔÚ¼ÆËã»òºË¶ÔժҪ֮ǰ¾Í½«ÈÎºÎÆäËü»»ÐÐת»»ÎªCRLF£ºÊµ¼Ê´«ÊäµÄÎı¾ÖÐʹÓõĻ»ÐбØÐëÔ­·â²»¶¯µÄ²ÎÓëÕªÒª¼ÆËã¡£

×¢£ºËäÈ»HTTPµÄContent-MD5µÄ¶¨ÒåºÍRFC 1864ÖйØÓÚMIMEʵÌåÖ÷ÌåµÄÍêȫһÑù£¬ µ«HTTP ʵÌåÖ÷ÌåÔÚ¶ÔContent-MD5µÄÓ¦ÓÃÉÏÈÔÈ»Óм¸´¦ÓëMIMEʵÌåÖ÷ÌåÓÐËùÇø±ð¡£Ê×ÏÈ£¬HTTP²»ÏóMIME»áÓÃContent-Transfer-EncodingÍ·Óò£¬¶øÊÇ»áʹÓÃTransfer-EncodingºÍÓëContent-EncodingÍ·Óò¡£ Æä´Î£¬HTTP±ÈMIME¸ü¶àµØÊ¹Óöþ½øÖÆÄÚÈÝÀàÐÍ£¬ÔÚ´ËÖÖÇé¿öÏ£¬ÓÃÓÚ¼ÆËãÕªÒªµÄ×Ö½Ú˳ÐòÒ²¼´ÓÉÀàÐͶ¨ÒåµÄ´«Êä×Ö½ÚµÄ˳Ðò¡£×îºó£¬HTTPÔÊÐíÎı¾Àà´«Êäʱ²ÉÓÃÊýÖÖ»»ÐУ¬¶ø²»Ö»Êǹ淶µÄʹÓÃCRLFµÄµÄ±ê×¼ÐÎʽ¡£

14.16 Content-Range
Content-RangeʵÌåÍ·ÓòÓ벿·ÖʵÌåÖ÷ÌåÒ»Æð·¢ËÍ£¬ÓÃÓÚÖ¸Ã÷²¿·ÖʵÌåÖ÷ÌåÔÚÍêÕûʵÌåÖ÷ÌåÀïÄÇÒ»²¿·Ö±»²ÉÓᣠ·¶Î§µÄµ¥Î»£¨Range unit£©ÔÚ3.12½ÚÖж¨Òå¡£

Content-Range = "Content-Range" ":" content-range-spec

content-range-spec = byte-content-range-spec

byte-content-range-spec = bytes-unit SP

byte-range-resp-spec "/"

( instance-length | "*" )

byte-range-resp-spec = (first-byte-pos "-" last-byte-pos)

| "*"

instance-length = 1*DIGIT

³ý·ÇÎÞ·¨»òºÜÄÑÅжϣ¬´ËÍ·ÓòÓ¦Ö¸Ã÷ÍêÕûʵÌåÖ÷ÌåµÄ×ܳ¤¶È¡£ÐǺœ*”±íʾÉú³ÉÏìӦʱµÄinstance-lengthδ֪¡£

Óëbyte-ranges-specifierÖµ£¨²Î¼û14.35.1½Ú£©²»Í¬µÄÊÇ£¬byte-range-resp-spec±ØÐëÖ»ÄÜÖ¸Ã÷Ò»¸ö·¶Î§£¬²¢ÇÒ±ØÐë°üº¬Ê××Ö½ÚºÍβ×ֽڵľø¶ÔλÖá£

Ò»¸ö´øÓÐbyte-range-resp-specµÄbyte-content-range-spec£¬Èç¹ûËüµÄlast-byte-posֵСÓÚfirst-byte-posÖµ£¬»òËüµÄinstance-lengthֵСÓÚ»òµÈÓÚËüµÄlast-byte-posÖµ£¬ÄÇô¾Í˵Ã÷ÊÇÎÞЧµÄ¡£ÊÕµ½ÎÞЧµÄbyte-content-range-spec½«±»ºöÂÔ£¬²¢ÇÒÈκÎËæÆä´«ÊäµÄÄÚÈݶ¼½«±»ºöÂÔ¡£

ÏìӦʱ·¢ËÍ״̬Âë416£¨ÇëÇóµÄ·¶Î§ÎÞ·¨Âú×㣩µÄ·þÎñÆ÷Ó¦¸Ã°üº¬Ò»¸öContent-RangeÍ·Óò£¬ÇÒÀïÃæµÄbyte-range-resp-specµÄֵΪ“*”¡£instance-lengthÖ¸Ã÷ÁËÑ¡¶¨×ÊÔ´µÄ³¤¶È¡£×´Ì¬ÂëΪ206£¨²¿·ÖÄÚÈÝ£©µÄÏìÓ¦²»Ó¦¸Ã°üº¬Ò»¸öbyte-range-resp-sepcΪ“*”µÄContent-RangeÍ·Óò¡£

¼Ù¶¨ÊµÌå¹²º¬1234×Ö½Ú£¬byte-content-range-specÖµµÄÀý×ÓÈçÏ£º

. The first 500 bytes:

bytes 0-499/1234

. The second 500 bytes:

bytes 500-999/1234

. All except for the first 500 bytes:

bytes 500-1233/1234

. The last 500 bytes:

bytes 734-1233/1234

µ±HTTPÏûÏ¢Àï°üº¬µ¥Ò»·¶Î§Ê±£¬£¨±ÈÈ磬¶Ôµ¥Ò»·¶Î§ÇëÇóµÄÏìÓ¦£¬»ò¶ÔÒ»×éÄÜÎÞ·ìÏàÁ¬µÄ·¶Î§ÇëÇóµÄÏìÓ¦£©£¬ÄÇô´ËÄÚÈݱØÐë¸úËæÒ»¸öContent-RangeÍ·Óò£¬²¢ÇÒ»¹Ó¦¸Ã°üº¬Ò»¸öContent-LengthÍ·ÓòÀ´±íÃ÷ʵ¼ÊÐèÒª±»´«Êä×ֽڵij¤¶È¡£ÀýÈ磬

HTTP/1.1 206 Partial content

Date: Wed, 15 Nov 1995 06:25:24 GMT

Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT

Content-Range: bytes 21010-47021/47022

Content-Length: 26012

Content-Type: image/gif

µ±HTTP±¨Îİüº¬¶à¸ö·¶Î§Ê±£¨±ÈÈ磬¶Ô¶à¸öÎ´ÖØµþ·¶Î§ÇëÇóµÄÏìÓ¦£©£¬ËüÃǻᱻµ±×÷¶à²¿·ÖÀàÐ͵ÄÏûÏ¢À´´«ËÍ¡£Îª´ËÄ¿µÄ¶à²¿·ÖýÌåÀàÐÍΪ“multipart/byteranges”£¬ËüÔÚ¸½Â¼19.2Àï½éÉÜÁË¡£¼û19.6.3Àï¹ØÓÚ¼æÈÝÐÔµÄÎÊÌâÃèÊö¡£

¶Ôµ¥Ò»·¶Î§ÇëÇóµÄÏìÓ¦²»µÃʹÓÃmultipart/byterangesýÌåÀàÐÍ¡£Èô¶Ô¶à¸ö·¶Î§ÇëÇóµÄÏìÓ¦½á¹ûΪһ¸öµ¥Ò»·¶Î§£¬ÄÇô¿ÉÒÔÒÔÒ»¸ömultipart/byterangesýÌåÀàÐÍ·¢ËͲ¢ÇÒ´ËýÌåÀàÐÍÀïÖ»ÓÐÒ»¸ö²¿·Ö£¨part£©¡£Ò»¸ö¿Í»§¶ËÎÞ·¨¶Ômultipart/byterangesÏûÏ¢½âÂ룬ÄÇôËü²»ÄÜÔÚÒ»¸öÇëÇóÖÐÇëÇó¶à¸ö×Ö½Ú·¶Î§¡£

µ±¿Í»§¶ËÔÚÒ»¸öÇëÇóÖÐÉêÇë¶à¸ö×Ö½Ú·¶Î§Ê±£¬·þÎñÆ÷Ó¦°´ËûÃÇÔÚÇëÇóÖгöÏÖµÄ˳Ðò·¶Î§·µ»ØËûÃÇËùÖ¸¶¨µÄ·¶Î§¡£

Èô·þÎñÆ÷³öÓھ䷨ÎÞЧµÄÔ­ÒòºöÂÔÁË×Öbyte-range-spec£¬ËüÓ¦°ÑÇëÇóÀïµÄÎÞЧ·¶Î§¿´³É²»´æÔÚ¡££¨Õý³£Çé¿öÏ£¬ÕâÒâζ×Å·µ»ØÒ»¸ö°üº¬ÍêÕûʵÌåµÄ200ÏìÓ¦¡££©

Èç¹û·þÎñÆ÷½ÓÊÕµ½Ò»¸öÇëÇ󣬴ËÇëÇó°üº¬Ò»¸öÎÞ·¨Âú×ãµÄRangeÇëÇóÍ·Óò£¨Ò²¼´£¬ËùÓÐbyte-range-specÀïµÄfirst-byte-posÖµ´óÓÚµ±Ç°Ñ¡Ôñ×ÊÔ´µÄ³¤¶È£©£¬ÄÇôËü½«·µ»ØÒ»¸ö416ÏìÓ¦£¨ÇëÇóµÄ·¶Î§ÎÞ·¨Âú×㣩£¨²Î¼û10.4.17½Ú£©¡£

×¢£º ¿Í»§¶Ë¶ÔÎÞ·¨Âú×ãRangeÇëÇóÍ·Óò²»ÄÜÖ¸Íû·þÎñÆ÷Ò»¶¨·µ»Ø416£¨ÇëÇóµÄ·¶Î§ÎÞ·¨Âú×㣩ÏìÓ¦¶ø·Ç200£¨OK£©µÄÏìÓ¦£¬ÒòΪ²»ÊÇËùÓзþÎñÆ÷¶¼ÄÜ´¦ÀíRangeÇëÇóÍ·Óò¡£

14.17 Content-Type
Content-TypeʵÌåÍ·ÓòÖ¸Ã÷·¢¸ø½ÓÊÕÕßµÄʵÌåÖ÷ÌåµÄýÌåÀàÐÍ£¬»òÔÚHEAD·½·¨ÖÐÖ¸Ã÷ÈôÇëÇóΪGETʱ½«·¢Ë͵ÄýÌåÀàÐÍ¡£

Content-Type = "Content-Type" ":" media-type

ýÌåÀàÐÍÓÐ3.7½Ú¶¨Òå¡£ ´ËÍ·ÓòµÄʾÀýÈçÏ£º

Content-Type: text/html; charset=ISO-8859-4

7.2.1½ÚÌṩÁ˹ØÓÚÈ·¶¨ÊµÌåýÌåÀàÐÍ·½·¨µÄ½øÒ»²½ÂÛÊö¡£

14.18 Date
Date³£ÓÃÍ·Óò±íÃ÷²úÉúÏûÏ¢µÄÈÕÆÚºÍʱ¼ä£¬ËüºÍRFC822ÖеÄorig-dateÓïÒåÒ»Ñù¡£´ËÍ·ÓòÖµÊÇÒ»¸öÔÚ3.3.1ÀïÃèÊöµÄHTTP-date£»Ëü±ØÐëÓÃRFC1123[8]ÀïµÄdate¸ñʽ·¢ËÍ¡£

      Date="Date""£º"HTTP-date

¾Ù¸öÀý×Ó

         Date:Tue,15 Nov 1994 08:12:31GMT

Ô´·þÎñÆ÷ÔÚËùÓеÄÏìÓ¦ÖбØÐë°üÀ¨Ò»¸öÈÕÆÚÍ·Óò£¬³ýÁËÏÂÃæÕâЩÇé¿ö£º

Èç¹ûÏìÓ¦µÄ״̬´úÂëÊÇ100£¨¼ÌÐø£©»ò101£¨×ª»»Ð­Ò飩£¬ÄÇôÏìÓ¦¸ù¾Ý·þÎñÆ÷µÄÐèÒª¿ÉÒÔ°üº¬Ò»¸öDateÍ·Óò¡£

Èç¹ûÏìӦ״̬´úÂë±í´ïÁË·þÎñÆ÷µÄ´íÎó£¬Èç500£¨ÄÚ²¿·þÎñÆ÷´íÎ󣩻ò503£¨ÄÑÒÔ»ñµÃµÄ·þÎñ£©£¬ÄÇôԴ·þÎñÆ÷¾Í²»Êʺϻò²»ÄÜÈ¥²úÉúÒ»¸öÓÐЧµÄÈÕÆÚ¡£

Èç¹û·þÎñÆ÷ûÓÐʱÖÓ£¬²»ÄÜÌṩºÏÀíµÄµ±Ç°Ê±¼äµÄ½üËÆÖµ£¬Õâ¸öÏìӦû±ØÒª°üÀ¨DateÍ·Óò£¬µ«ÔÚÕâÖÖÇé¿öϱØÐë×ñÕÕ 14.18.1½ÚÖеĹæÔò¡£

Ò»¸öÊÕµ½µÄÏûÏ¢Èç¹ûûÓÐDateÍ·ÓòµÄ»°¾Í»á±»½ÓÊÕÕß¼ÓÉÏÒ»¸ö£¬Èç¹ûÕâÌõÏûÏ¢Òª±»Õâ¸ö½ÓÊÕÕß»º´æ»òÕßÕâÌõÏûÏ¢ÐèÒª´©¹ýÒ»¸öÐèÒªÈÕÆÚµÄЭÒéÍø¹Ø¡£Ò»¸öûÓÐʱÖÓµÄHTTPʵÏÖ²»ÄÜÔÚûÓÐÖØÑéÖ¤ÏìӦʱȥ»º´æ£¨±£´æ£©´ËÏìÓ¦¡£Ò»¸öHTTP»º´æ£¬ÌرðÊÇÒ»¸ö¹²Ïí»º´æ£¬Ó¦¸ÃʹÓÃÒ»ÖÖ»úÖÆÊ¹£¬ÀýÈçNTP[28]£¬È¥ÈÃËüµÄʱÖÓÓëÍâ½ç¿É¿¿µÄʱÖÓ±£³Öͬ²½¡£

¿Í»§¶ËÔÚ°üÀ¨ÊµÌåÖ÷Ì壨entity-body£©µÄÏûÏ¢ÖÐÓ¦¸Ã°üº¬Ò»¸öDateÍ·Óò£¬ÀýÈçÔÚPUTºÍPOSTÇëÇóÀ¼´Ê±ÕâÑù×öÊÇ¿ÉÑ¡µÄ¡£Ò»¸öûÓÐʱÖӵĿͻ§¶Ë²»ÄÜÔÚÇëÇóÖз¢ËÍDateÍ·Óò¡£

Ò»¸öDateÍ·ÓòÖеÄHTTP-date²»Ó¦¸ÃÊÇÒ»¸öÏûÏ¢²úÉúʱ¿ÌÖ®ºóµÄÈÕÆÚºÍʱ¼ä¡£ËüÓ¦¸Ã±íʾÓëÏûÏ¢²úÉúʱµÄÈÕÆÚºÍʱ¼äµÄ×î½üËÆÖµ£¬³ý·ÇûÓа취²úÉúÒ»¸öºÏÀíµÄ¾«È·ÈÕÆÚºÍʱ¼ä¡£Ò»¸öÇ¡µ±µÄÏ൱¾«È·µÄÈÕÆÚºÍʱ¼ä¡£ÀíÂÛÉÏ˵£¬ÈÕÆÚÓ¦¸ÃÊÇÔÚʵÌ壨entity£©²úÉú֮ǰµÄÄÇÒ»¿Ì£¬Êµ¼ÊÉÏ£¬ÈÕÆÚÊÇÔÚ²»Ó°ÏìÆäÓïÒåÖµµÄÇé¿öÏÂÏûÏ¢²úÉúÆÚ¼äµÄÈÎÒâʱ¿Ì¡£

14.18.1ûÓÐʱÖÓµÄÔ´·þÎñÆ÷ÔË×÷
һЩԴ·þÎñÆ÷ʵÏÖ¿ÉÄÜûÓпɵÃʱÖÓ¡£Ò»¸öûÓпɵÃʱÖÓµÄÔ´·þÎñÆ÷²»ÄܸøÒ»¸öÏìÓ¦Ö¸¶¨Expires»òLast-ModifiedÍ·ÓòÖµ£¬³ý·Çͨ¹ýÒ»¸ö¾ßÓпÉÐÅÀµÊ±ÖÓµÄϵͳ»òÓû§£¬°Ñ´ËÖµÓë´Ë×ÊÔ´ÁªÏµÔÚÒ»Æð¡£¿ÉÒÔ¸øExpires¸³ÓèÒ»¸ö¹ýÈ¥Öµ£¬´ËֵΪ·þÎñÆ÷ÉèÖÃʱ¼ä»ò´ËÉèÖÃʱ¼ä֮ǰµÄÖµ¡££¨ÕâÔÊÐíÏìÓ¦µÄ“pre-expiration”²»ÐèҪΪÿ¸ö×ÊÔ´±£´æ·ÖÀëµÄExpiresÖµ£©¡£

14.19 ETag
EtagÏìӦͷÓòÌṩÁËÇëÇó¶ÔÓ¦±äÁ¿£¨variant£©µÄµ±Ç°ÊµÌå±êÇ©¡£ÓëʵÌå±êǩһÆðʹÓõÄÍ·ÓòÓÉ14.24£¬14.26ºÍ14.44¡£ÊµÌå±êÇ©¿ÉÓÃÓڱȽÏÀ´×Ôͬһ×ÊÔ´µÄ²»Í¬ÊµÌå¡££¨²Î¼û13.3.3½Ú£©

Etag =  "Etag" ":" entity-tag

Àý£º

      ETag: "xyzzy"

      ETag: W/"xyzzy"

      ETag: ""

14.20 Expect
ExpectÇëÇóÍ·ÓòÓÃÓÚÖ¸Ã÷¿Í»§¶ËÐèÒªµÄÌØ¶¨·þÎñÆ÷ÐÐΪ¡£

Expect = "Expect" ":" 1#expectation

expectation = "100-continue" | expectation-extension

expectation-extension = token [ "=" ( token | quoted-string )

*expect-params ]

expect-params = ";" token [ "=" ( token | quoted-string ) ]

Ò»¸ö·þÎñÆ÷Èç¹û²»ÄÜÀí½â»ò×ñÑ­Ò»¸öÇëÇóÀïExpectÍ·ÓòµÄÈκÎexpectationÖµ£¬ÄÇôËü±ØÐëÒÔºÏÊʵĴíÎó״̬ÂëÏìÓ¦¡£Èç¹û·þÎñÆ÷²»ÄÜÂú×ãÈκÎexpection£¬·þÎñÆ÷±ØÐëÒÔ417£¨ÆÚÍûʧ°Ü£©×´Ì¬ÂëÏìÓ¦£¬»òÕßÈç¹û·þÎñÆ÷¶ÔÇëÇóÓöµ½ÆäËüÎÊÌ⣬·þÎñÆ÷±ØÐë·¢ËÍ4xx״̬Âë¡£

±¾Í·ÓòΪ½«À´µÄÀ©Õ¹±»¶¨Òå³ÉÒ»¸öÀ©Õ¹µÄÓï·¨¡£Èô·þÎñÆ÷½ÓÊÕµ½µÄÇëÇóº¬ÓÐËü²»Ö§³ÖµÄexpectation-extension£¬ÄÇôËü±ØÐëÒÔ417£¨ÆÚÍûʧ°Ü£©×´Ì¬ÏìÓ¦¡£

expectationÖµµÄ±È½Ï¶ÔÓÚδÒýÓñê¼Ç£¨unquoted token£©£¨°üÀ¨“100-contine”±ê¼Ç£©ÊǶøÑÔÊDz»Çø·Ö´óСдµÄ£¬¶ÔÒýÓÃ×Ö·û´®£¨quoted-string£©µÄexpectation-extension¶øÑÔÊÇÇø·Ö´óСдµÄ¡£

Expect»úÖÆÊÇhop-by-hopµÄ£º¼´HTTP/1.1´úÀí£¨proxy£©±ØÐë·µ»Ø417£¨ÆÚÍûʧ°Ü£©ÏìÓ¦Èç¹ûËü½ÓÊÕÁËÒ»¸öËü²»ÄÜÂú×ãµÄexpectation¡£ È»¶ø£¬ExpectÇëÇóÍ·Óò±¾ÉíÊÇend-to-endÍ·Óò£»Ëü±ØÐëÒªËæÇëÇóÒ»Æðת·¢¡£

Ðí¶à¾É°æµÄHTTP/1.0ºÍHTTP/1.1Ó¦ÓóÌÐò²¢²»Àí½âExpectÍ·Óò¡£

²Î¼û8.2.3½ÚÖÐ100£¨¼ÌÐø£©×´Ì¬µÄʹÓá£

14.21 Expires
ExpiresʵÌåÍ·Óò£¨entity-header£©¸ø³öÁËÔÚºÎÈÕºÎʱ֮ºóÏìÓ¦¼´±»ÊÓΪ³Â¾ÉµÄ¡£Ò»¸ö³Â¾ÉµÄ»º´æÏî²»Äܱ»»º´æ£¨Ò»¸ö´úÀí»º´æ»òÒ»¸öÓû§´úÀíµÄ»º´æ£©·µ»Ø¸ø¿Í»§¶Ë£¬³ý·Ç´Ë»º´æÏî±»Ô´·þÎñÆ÷ÑéÖ¤£¨»òÕß±»Ò»¸öÓµÓÐʵÌåµÄ±£Ïʸ±±¾µÄÖм仺´æ£©¡£¼û13.2½Ú¹ØÓÚ¹ýÆÚÄ£Ð͵ĽøÒ»²½µÄÌÖÂÛ¡£

ExpiresÍ·ÓòµÄ³öÏÖ²¢²»Òâζ×ÅÔ´×ÊÔ´£¨Òë×¢£º´æ·ÅÓÚÔ´·þÎñÆ÷µÄ×ÊÔ´£©ÔÚExpireÖ¸¶¨Ê±¼äʱ¡¢Ö®Ç°»òÖ®ºó½«»á¸Ä±ä»ò½«»á²»´æÔÚ¡£

ExpiresÍ·ÓòÀïÈÕÆÚ¸ñʽÊǾø¶ÔÈÕÆÚ£¨absolute date£©ºÍʱ¼ä£¬ÓÉ3.3.1½ÚÖÐHTTP-date¶¨Ò壻Ëü±ØÐëÊÇRFC1123ÀïµÄÈÕÆÚ¸ñʽ£º

Expires="Expires " ":"  HTTP-date

ʹÓÃʾÀýΪ£º

Expires: Thu, 01 Dec 1994 16:00:00 GMT

×¢£ºÈôÏìÓ¦°üº¬Ò»¸öCache-ControlÍ·Óò£¬²¢ÇÒº¬ÓÐmax-age»º´æ¿ØÖÆÖ¸Á²Î¼û14.9.3½Ú£©£¬Ôò´ËÖ¸Á¸ÇExpiresÍ·Óò¡£

HTTP/1.1¿Í»§¶ËºÍ»º´æ±ØÐë°ÑÆäËûÎÞЧµÄÈÕÆÚ¸ñʽ£¬ÌرðÊǰüº¬“0”µÄÈÕÆÚ¸ñʽ¿´³ÉÊǹýÈ¥µÄʱ¼ä£¨Ò²¾ÍÊÇ˵£¬“ÒѾ­¹ýÆÚ”£©¡£

ΪÁ˽«ÏìÓ¦±êΪ“ÒѾ­¹ýÆÚ”£¬Ô´·þÎñÆ÷±ØÐë°ÑExpiresÍ·ÓòÀïµÄÈÕÆÚÉèΪÓëDateÍ·ÓòÖµÏàµÈ¡££¨²Î¼û13.2.4½ÚÀï¹ØÓÚ¹ýÆÚ¼ÆËãµÄ¹æÔò¡££©

Ϊ±ê¼ÇÏìӦΪ“ÓÀ²»¹ýÆÚ”£¬Ô´·þÎñÆ÷±ØÐë°ÑExpiresÍ·ÓòÀïµÄÈÕÆÚÉèΪÍíÓÚÏìÓ¦·¢ËÍʱ¼äÒ»Äê×óÓÒ¡£HTTP/1.1·þÎñÆ÷²»Ó¦·¢Ëͳ¬¹ý½«À´Ò»ÄêµÄ¹ýÆÚÈÕÆÚ¡£

¶ÔÓÚȱʡ²»¿É±»»º´æµÄÏìÓ¦¶øÑÔ£¬³ý·Ç±»Cache-ControlÍ·Óò£¨¼û14.9½Ú£©Ö¸Ã÷£¬·ñÔòÈç¹ûExpiresÍ·ÓòÀïÈÕÆÚֵΪÏìÓ¦½«À´µÄʱ¼ä£¬ÄÇô¾Í±íÃ÷´ËÏìÓ¦Êǿɻº´æµÄ¡£

14.22 From
FromÇëÇó±¨Í·Óò£¬Èç¹ûÓеϰ£¬Ó¦¸Ã°üº¬Óû§´úÀíµ±Ç°²Ù×÷Óû§µÄemailµØÖ·¡£Õâ¸öµØÖ·Ó¦¸ÃÊÇ»úÆ÷¿ÉÓõĵØÖ·£¬Õâ±»RFC 822 [9]ÀïµÄ“mailbox”¶¨ÒåͬʱҲÔÚRFC 1123 [8]ÀïÐÞ¶©ÁË£º

    From   = "From" ":" mailbox

    ÀýÈ磺

        From: webmaster@w3.org

Í·Óò¿ÉÒÔ±»ÓÃÓڼǼÈÕÖ¾ºÍ×÷Ϊʶ±ðÎÞЧ»ò¶àÓàÇëÇóµÄ×ÊÔ´¡£Ëû²»Ó¦¸ÃÓÃ×÷²»°²È«ÐÎʽµÄ·ÃÎʱ£»¤¡£Õâ¸öÍ·ÓòµÄ½âÊÍÊÇ£ºÇëÇóÊÇ´ú±íËùÖ¸¶¨µÄÈËÖ´Ðе쬴ËÈËÓ¦¸Ã³Ðµ£Õâ¸ö·½·¨Ö´ÐеÄÔðÈΡ£ÌرðµÄ£¬»úÆ÷ÈË´úÀí³ÌÐòÓ¦¸Ã°üº¬Õâ¸öÍ·Óò£¬ÕâÑù´ËÈËÓ¦¸Ã¶ÔÔËÐд˻úÆ÷ÈË´úÀí³ÌÐò¸ºÔ𣬲¢ÇÒÓ¦¸ÃÄܱ»ÁªÏµÉÏÈç¹ûÔÚ½ÓÊն˳öÏÖÎÊÌâµÄ»°¡£

´ËÍ·ÓòÀïµÄÍøÂçemailµØÖ·ÊÇ¿ÉÒԺͷ¢³öÇëÇóµÄÍøÂçÖ÷»ú£¨host£©·ÖÀëµÄ¡£ÀýÈ磬µ±Ò»¸öÇëÇóͨ¹ýÒ»¸ö´úÀí£¨proxy£©Ê±£¬³õʼÇëÇó·¢ËÍÕߵĵØÖ·Ó¦¸Ã±»Ê¹Óá£

¿Í»§¶ËÔÚûÓÐÓû§µÄÔÊÐíÊDz»Ó¦¸Ã·¢³öFromÍ·ÓòµÄ£¬ÒòΪËü¿ÉÄܺÍÓû§µÄ¸öÈËÀûÒæ»òÕßËûÃÇÕ¾µãµÄ°²È«Õþ²ßÏà³åÍ»¡£Ç¿ÁÒ½¨ÒéÔÚÈκÎÒ»´ÎÇëÇó֮ǰÓû§ÄÜÈ¡Ïû£¬ÊÚȨ£¬ºÍÐÞ¸ÄÕâ¸öÍ·ÓòµÄÖµ¡£

14.23 Host
HostÇëÇóÍ·Óò˵Ã÷ÁËÕýÔÚÇëÇó×ÊÔ´µÄÍøÂçÖ÷»úºÍ¶Ë¿ÚºÅ£¬Õâ¿ÉÒÔ´ÓÔ´URI»òÒýÓÃ×ÊÔ´£¨Í¨³£ÊÇÒ»¸öHTTP URL£¬ÕâÔÚ3.3.3½ÚÀïÃèÊö£©¡£HostÍ·ÓòÖµ±ØÐë´ú±íÔ´·þÎñÆ÷»òÍø¹Ø£¨±»Ô´URLÖ¸¶¨£©µÄÃüÃûÊÚȨ£¨naming authority£©¡£ÕâÔÊÐíÔ´·þÎñÆ÷»òÍø¹ØÈ¥Çø·ÖÓÐÄÚÔÚÆçÒåµÄURLS£¬ÀýÈ磬ӵÓÐÒ»¸öIPµØÖ·µÄ·þÎñÆ÷£¬ËüµÄ¸ù“/”URL¶ÔÓ¦Óжà¸öÖ÷»úÃû¡£

    Host = "Host" ":" host [ ":" port ] ; 3.2.2½Ú

Ò»¸ö“host”Èç¹ûûÓиúËæµÄ¶Ë¿ÚÐÅÏ¢£¬ÄÇô¾Í²ÉÓÃÊÇÇëÇó·þÎñµÄµÄĬÈ϶˿ڣ¨ÀýÈ磬¶ÔÒ»¸öHTTP URLÀ´Ëµ£¬¾ÍÊÇ80¶Ë¿Ú£©¡£ÀýÈ磬һ¸ö¶ÔÔ´·þÎñÆ÷http://www.w3.org/pub/WWW/µÄÇëÇ󣬿ÉÒÔÓÃÏÂÃæÀ´±íʾ£º

   GET /pub/WWW/HTTP/1.1

   Host: www.w3.org

Ò»¸ö¿Í»§¶Ë±ØÐëÔÚËùÓÐHTTP/1.1ÇëÇóÏûÏ¢Àï°üº¬Ò»¸öHostÍ·Óò¡£Èç¹ûÇëÇóURIûÓаüº¬ÇëÇó·þÎñµÄÍøÂçÖ÷»úÃû£¬ÄÇôHostÍ·Óò±ØÐë¸øÒ»¸ö¿ÕÖµ¡£Ò»¸öHTTP/1.1´úÀí±ØÐëÈ·±£ÈκÎËüת·¢µÄÇëÇóÏûÏ¢Àï±ØÐë°üº¬Ò»¸öºÏÊʵÄHostÍ·Óò£¬´ËÍ·ÓòÖ¸¶¨ÁË´úÀíÇëÇóµÄ·þÎñµØÖ·¡£ËùÓлùÓÚÍøÂçµÄHTTP/1.1·þÎñÆ÷±ØÐëÏìÓ¦400£¨»µÇëÇó£©×´Ì¬Â룬Èç¹ûÇëÇóÏûÏ¢ÀïȱÉÙHostÍ·Óò¡£

¼û5.2ºÍ19.6.1.1½ÚÀïÓÐÕë¶ÔHostÍ·ÓòµÄÆäËûÒªÇó¡£

14.24 If-Match
If-MatchÇëÇóÍ·ÓòÊÇÓÃÀ´È÷½·¨³ÉΪÌõ¼þ·½·¨¡£Èç¹ûÒ»¸ö¿Í»§¶ËÒѾ­´ÓÒ»¸ö×ÊÔ´Àï»ñµÃÒ»¸ö»ò¶à¸öʵÌ壨entity£©£¬ÄÇôËû¿ÉÒÔͨ¹ýÔÚIf-MatchÍ·ÓòÀï°üº¬ÏàÓ¦µÄʵÌå±êÇ©£¨entity tag£©À´ÑéÖ¤ÕâЩʵÌåµÄÒ»¸ö»ò¶à¸öÊÇ·ñ¾ÍÊÇ·þÎñÆ÷µ±Ç°ÊµÌ塣ʵÌå±êÇ©£¨entity tag£©ÔÚ3.11½ÚÀﶨÒå¡£Õâ¸öÌØÐÔʹ¸üлº´æÐÅÏ¢Ö»ÐèÒªÒ»¸öºÜСµÄÊÂÎñ¿ªÏú¡£ËüÕÕÑù±»ÓÃÓÚ·Àֹͨ¹ý¸üÐÂÇëÇó¶ÔÒ»¸ö×ÊÔ´ÆäËü°æ±¾µÄ²»¾­ÒâÐ޸ġ£×÷ΪһÖÖÌØÊâÇé¿ö£¬“*”Æ¥Åä×ÊÔ´µÄµ±Ç°ÈκÎʵÌå¡£

     If-Match = "If-Match" ":" £¨ "*" | 1#entity-tag £©

Èç¹ûIf-MatchÍ·ÓòÀïÈκÎÒ»¸öʵÌå±êÇ©¼ÙÉèÓëÏàËÆµÄGETÇëÇó£¨Ã»ÓÐIf-MatchÍ·Óò£©·µ»ØÊµÌåµÄʵÌå±êÇ©ÏàÆ¥Å䣬»òÕßÈç¹û¸ø³ö“*”²¢ÇÒÇëÇó×ÊÔ´µÄµ±Ç°ÊµÌå´æÔÚ£¬ÄÇô·þÎñÆ÷¿ÉÒÔÖ´ÐÐÇëÇó·½·¨¾ÍºÃÏñIf-MatchÍ·Óò²»´æÔÚÒ»Ñù¡£

·þÎñÆ÷±ØÐëÓÃÇ¿±È½Ï·½·¨£¨¼û13.3.3£©À´±È½ÏIf-MatchÀïµÄʵÌå±êÇ©£¨entity tag£©¡£

Èç¹ûûÓÐÒ»¸öʵÌå±êǩƥÅ䣬»òÕ߸ø³öÁË“*”µ«·þÎñÆ÷ÉÏûÓе±Ç°µÄʵÌ壬ÄÇô·þÎñÆ÷²»ÄÜÖ´ÐдËÇëÇóµÄ·½·¨£¬²¢ÇÒ·µ»Ø412ÏìÓ¦£¨ÏȾöÌõ¼þʧ°Ü£©¡£ÕâÖÖÐÐΪÊǺÜÓÐÓõģ¬ÌرðÊÇÔÚµ±¿Í»§¶ËÏ£Íû·ÀÖ¹Ò»¸ö¸üз½·¨£¨updating method£©£¨ÀýÈçPUT·½·¨£©È¥ÐÞ¸ÄÒ»¸ö¿Í»§¶ËÉÏ´ÎÇëÇóµÄµ«ÏÖÔÚÒѾ­¸Ä±äÁ˵Ä×ÊԴʱ£¬

Èç¹ûÇëÇóÔÚ¼ÙÉèÔÚûÓÐIf-MatchÍ·ÓòµÄÇé¿öϵ¼ÖÂÁ˳ý2XX»ò412ÒÔÍâµÄÆäËû״̬ÂëÏìÓ¦£¬ÄÇôIf-MatchÍ·Óò±ØÐë±»ºöÂÔ¡£

“If-Match: *” µÄº¬ÒåÊÇ£º´Ë·½·¨½«±»Ö´ÐУ¬Èç¹ûÔ´·þÎñÆ÷£¨»ò»º´æ£¬ºÜ¿ÉÄÜʹÓÃVary»úÖÆ£¬¼û14.44½Ú£©Ñ¡ÔñµÄ±íÏÖÐÎʽ£¨representation£©´æÔڵϰ£¬µ«ÊÇÈç¹û´Ë±íÏÖÐÎʽ²»´æÔÚ£¬ÄÇô´Ë·½·¨²»Äܱ»Ö´ÐС£

Èç¹ûÒ»¸öÇëÇóÏëÒª¸üÐÂÒ»¸ö×ÊÔ´£¨ÀýÈçPUT£©ÄÇôËü¿ÉÒÔ°üº¬Ò»¸öIf-MatchÍ·ÓòÀ´Ö¸Ã÷£ºµ±ÏàÓ¦ÓÚIf-MatchÖµ£¨Ò»¸öʵÌå±êÇ©£©µÄʵÌå²»ÔÙÊÇÄǸö×ÊÔ´µÄ±íÏÖÐÎʽʱ£¬´ËÇëÇó·½·¨²»Äܱ»²ÉÓá£ÕâÔÊÐíÓû§±íÃ÷£ºÈç¹ûÄǸö×ÊÔ´ÒѾ­¸Ä±äÁ˶øËûÃDz»ÖªµÀµÄ»°£¬ËûÃDz»Ï£ÍûÇëÇó³É¹¦¡£

ÀýÈ磺

       If-Match: "xyzzy"

       If-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"

       If-Match: *

¼ÈÓÐIf-MatchÍ·ÓòÓÖÓÐIf-None-Match»òIf-Modified-SinceÍ·ÓòµÄÇëÇóµÄ½á¹ûÔÚ±¾¹æ·¶Ã»Óж¨Òå¡£

14.25 If-Modified-Since
If-Modified-SinceÇëÇóÍ·Óò±»ÓÃÀ´È÷½·¨³ÉΪÌõ¼þ·½·¨£ºÈç¹ûÇëÇó±äÁ¿£¨variant£©×Ô´Ó´ËÍ·ÓòÀïÖ¸¶¨µÄʱ¼äÖ®ºóûÓиı䣬ÄÇô·þÎñÆ÷²»Ó¦¸Ã·µ»ØÊµÌ壻¶øÊÇÓ¦¸ÃÒÔ304£¨Ã»Óиı䣩״̬Âë½øÐÐÏìÓ¦£¬Í¬Ê±·µ»ØÏûÏ¢²»ÐèÒªÏûÏ¢Ö÷Ì壨message-body£©¡£

     If-Modified-Since = "If-Modified-Since" ":" HTTP-date

Ò»¸öÀý×ÓÊÇ£º

       If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

Èç¹ûÒ»¸öGETÇëÇó·½·¨º¬ÓÐIf-Modified-SinceÍ·Óòµ«Ã»ÓÐRangeÍ·Óò£¬ÄÇô´Ë·½·¨ÇëÇóµÄʵÌåÖ»ÓÐÇëÇóÀïIf-Modified-SinceÍ·ÓòÖÐÖ¸¶¨ÈÕÆÚÖ®ºó±»¸Ä±äºó²ÅÄܱ»·þÎñÆ÷·µ»Ø¡£¾ö¶¨Õâ¸öËã·¨°üÀ¨ÏÂÁÐÇé¿ö£º

   a£©Èç¹ûÇëÇó¼ÙÉè»áµ¼Ö³ý״̬200Ö®ÍâµÄÈÎºÎÆäËü״̬̬Â룬»òÕßÈç¹ûIf-Modified-SinceÈÕÆÚÊÇÎÞЧµÄ£¬ÄÇôÏìÓ¦¾ÍºÍÕý³£µÄGETÇëÇóµÄÏìÓ¦ÍêȫһÑù¡£±È·þÎñÆ÷µ±Ç°Ê±¼äÍíµÄÈÕÆÚÊÇÎÞЧµÄ¡£

   b£©Èç¹û×Ô´ÓÒ»¸öÓÐЧµÄIf-Modified-SinceÈÕÆÚÒÔÀ´£¬±äÁ¿ÒѾ­±»ÐÞ¸ÄÁË£¬ÄÇô·þÎñÆ÷Ó¦¸Ã·µ»ØÒ»¸öÏìӦͬÕý³£GETÇëÇóÒ»Ñù¡£

  c£©Èç¹û×Ô´ÓÒ»¸öÓÐЧµÄIf-Modified-SinceÈÕÆÚÒÔÀ´£¬±äÁ¿Ã»Óб»Ð޸ģ¬ÄÇô·þÎñÆ÷Ó¦¸Ã·µ»ØÒ»¸ö304£¨Ã»Óиı䣩ÏìÓ¦¡£

ÕâÖÖÌØÕ÷µÄÄ¿µÄÊÇÒÔÒ»¸ö×îСµÄÊÂÎñ¿ªÏúÀ´¸üлº´æÐÅÏ¢¡£

     ×¢ÊÍ£ºRangeÇëÇóÍ·ÓòÐÞ¸ÄÁËIf-Modified-SinceµÄº¬Ò壻ÏêϸÐÅÏ¢¼û14.35¡£

     ×¢ÊÍ£ºIf-Modified-SinceµÄʱ¼äÊÇÓÉ·þÎñÆ÷½âÎöµÄ£¬ËüµÄʱÖÓ¿ÉÄܺͿͻ§¶ËµÄ²»Í¬²½¡£

     ×¢ÊÍ£ºµ±´¦ÀíÒ»¸öIf-Modified-SinceÍ·ÓòµÄʱºò£¬Ò»Ð©·þÎñÆ÷ʹÓþ«È·µÄÈÕÆÚ±È½Ï·½·¨£¬¶ø²»ÊÇÉÔ²îµÄ±È½Ï·½·¨£¬À´¾ö¶¨ÊÇ·ñ·¢ËÍÏìÓ¦304£¨Ã»Óиı䣩ÏìÓ¦¡£µ±Îª»º´æÑéÖ¤¶ø·¢ËÍÒ»¸öIf-Modified-SinceÍ·ÓòµÄʱºò£¬ÎªÁ˵õ½×îºÃµÄ½á¹û£¬¿Í»§¶Ë±»½¨ÒéÈ¥ÀûÓþ«È·µÄÈÕÆÚ×Ö·û´®£¬´Ë×Ö·û´®ÊÇÒÔǰµÄLast-ModifiedÍ·ÓòÀï±»½ÓÊյġ£

     ×¢ÊÍ£ºÈç¹û¿Í»§¶Ë£¬¶ÔͬһÇëÇó£¬ÔÚIf-Modified-SinceÍ·ÓòÖÐʹÓÃÈÎÒâÈÕÆÚ´úÌæLast-ModifiedÍ·ÓòÀïµÃµ½µÄÈÕÆÚ£¬ÄÇô¿Í»§¶ËÓ¦¸ÃÖªµÀÕâ¸öÈÕÆÚÊÇÓÉ·þÎñÆ÷ͨ¹ý¶Ôʱ¼äµÄÀí½âÀ´½âÊ͵ġ£ÓÉÓÚ¿Í»§¶ËºÍ·þÎñÆ÷Ö®¼äʱ¼ä±àÂëµÄ²»Í¬£¬¿Í»§¶ËÓ¦¸Ã¿¼ÂÇʱÖÓ²»Í¬²½ºÍÉáÈëµÄÎÊÌâ¡£Èç¹ûÔÚ¿Í»§¶ËµÚÒ»´ÎÇëÇóʱ¿ÌÓëºóÀ´ÇëÇóÀïÍ·ÓòIf-Modified-SinceÖ¸¶¨µÄÈÕÆÚÖ®¼ä£¬ÎĵµÒѾ­¸Ä±ä£¬Õâ¾Í¿ÉÄÜ»á³öÏÖ¾ºÕùÌõ¼þ£¬»¹ÓУ¬Èç¹ûIf-Modified-Since´Ó¿Í»§¶ËµÃµ½µÄÈÕÆÚûÓеõ½·þÎñÆ÷ʱÖӵĽÃÕý£¬¾ÍÓпÉÄܳöÏÖʱÖÓÆ«²îµÈÎÊÌâµÄ¡£¿Í»§¶ËºÍ·þÎñÆ÷ʱ¼äµÄÆ«²î×îÓпÉÄÜÊÇÓÉÓÚÍøÂçµÄÑÓ³ÙÔì³ÉµÄ¡£

¼ÈÓÐIf-Modified-SinceÍ·ÓòÓÖÓÐIf-Match»òIf-Unmodified-SinceÍ·ÓòµÄÇëÇóµÄ½á¹ûÔÚ±¾¹æ·¶Ã»Óж¨Òå¡£

14.26 If-None-Match
If-None-MatchÍ·Óò±»ÓÃÓÚÒ»¸ö·½·¨Ê¹Ö®³ÉΪÌõ¼þµÄ¡£Ò»¸ö¿Í»§¶ËÈç¹ûÓÐÒ»¸ö»ò¶à¸ö´Óij×ÊÔ´»ñµÃµÄʵÌ壬ÄÇôËûÄÜÑéÖ¤ÔÚÕâЩʵÌåÖÐÓв»´æÔÚÓÚ·þÎñÆ÷µ±Ç°ÊµÌåÖеÄʵÌ壬Õâͨ¹ýÔÚIf-None-MatchÍ·ÓòÀï°üº¬ÕâЩʵÌåÏà¹ØµÄʵÌå±êÇ©£¨entity tag£©À´´ïµ½´ËÄ¿µÄ¡£Õâ¸öÌØÐÔÔÊÐíͨ¹ýÒ»¸ö×îСÊÂÎñ¿ªÏúÀ´¸üлº´æÐÅÏ¢¡£ËüͬÑù±»ÓÃÓÚ·ÀÖ¹Ò»¸ö·½·¨£¨È磬PUT£©²»¾­ÒâµÄ¸Ä±äÒ»¸öÒѾ­´æÔÚµÄ×ÊÔ´£¬¶ø¿Í»§¶Ë»¹ÏàÐÅÄǸö×ÊÔ´²¢²»´æÔÚʱ¡£

×÷ÎªÌØÊâÇé¿ö£¬Í·ÓòÖµ“*”Æ¥Åä×ÊÔ´µÄÈκε±Ç°ÊµÌå¡£

    If-None-Match = "If-None-Match" ":" £¨ "*" | 1#entity-tag £©

Èç¹ûIf-None-MatchÍ·ÓòÀïµÄÈκÎʵÌå±êÇ©£¨entity tag£©¼ÙÉèÓëÒ»¸öÏàËÆµÄGETÇëÇ󣨼ÙÉèûÓÐIf-None-MatchÍ·Óò£©·µ»ØÊµÌåµÄʵÌå±êÇ©ÏàÆ¥Å䣬»òÕߣ¬Èç¹û“*”±»¸ø³ö²¢ÇÒ·þÎñÆ÷¹ØÓÚÄǸö×ÊÔ´µÄÈκε±Ç°ÊµÌå´æÔÚ£¬ÄÇô·þÎñÆ÷²»ÄÜÖ´ÐдËÇëÇó·½·¨£¬³ý·Ç×ÊÔ´µÄÐÞ¸ÄÈÕÆÚ²»ÄÜÆ¥Åä´ËÇëÇóÀïIf-Modified-SinceÍ·Óò£¨¼ÙÉèÓеϰ£©ÀïÌṩµÄÈÕÆÚ ¡£»»ÑÔÖ®£¬Èç¹ûÇëÇó·½·¨ÊÇGET»òHEAD£¬ÄÇô·þÎñÆ÷Ó¦ÒÔ304£¨Ã»Óиı䣩À´ÏìÓ¦£¬²¢ÇÒ°üº¬Æ¥ÅäʵÌåµÄÏà¹Ø»º´æÍ·Óò£¨ÌرðÊÇEtag£© ¡£¶ÔÓÚËùÓÐÆäËü·½·¨£¬·þÎñÆ÷±ØÐëÒÔ412£¨ÏȾöÌõ¼þʧ°Ü£©×´Ì¬ÂëÏìÓ¦¡£

13.3½Ú˵Ã÷ÁËÈçºÎÅжÏÁ½ÊµÌå±êÇ©ÊÇ·ñÆ¥Åä¡£Èõ±È½Ï·½·¨Ö»ÄÜÓÃÓÚGET»òHEADÇëÇó¡£

Èç¹ûIf-None-MatchÍ·ÓòÀïûÓÐʵÌå±êǩƥÅ䣬ÄÇô·þÎñÆ÷¿ÉÒÔÖ´ÐдËÇëÇó·½·¨¾ÍÏñIf-None-MatchÍ·Óò²»´æÔÚÒ»Ñù£¬µ«ÊDZØÐëºöÂÔÇëÇóÀïµÄÈκÎIf-Modified-SinceÍ·Óò¡£ÄǾÍÊÇ˵£¬Èç¹ûûÓÐʵÌå±êǩƥÅä £¬ÄÇô·þÎñÆ÷²»ÄÜ·µ»Ø304£¨Ã»Óиı䣩ÏìÓ¦¡£

Èç¹û¼ÙÉèÔÚûÓÐIf-None-MatchÍ·Óò´æÔÚµÄÇé¿öÏ£¬ÇëÇó»áµ¼Ö³ý2xx¼°304״̬ÂëÖ®ÍâÏìÓ¦£¬ÄÇôIf-None-MatchÍ·Óò±ØÐë±»ºöÂÔ¡££¨¼û13.3.4½Ú¹ØÓÚ¼ÙÈçͬʱ´æÔÚIf-Modified-SinceºÍIf-None-MatchÍ·Óòʱ·þÎñÆ÷µÄÐÐΪµÄÌÖÂÛ£©

“If-None-Match: *”µÄÒâ˼ÊÇ£ºÈç¹û±»Ô´·þÎñÆ÷£¨»ò±»»º´æ£¬¿ÉÄÜÀûÓÃVary»úÖÆ£¬¼û14.44½Ú£©Ñ¡ÔñµÄ±íÏÖÐÎʽ£¨representation£©´æÔڵϰ£¬ÇëÇó·½·¨²»Äܱ»Ö´ÐУ¬È»¶ø£¬Èç¹û±íÏÖÐÎʽ²»´æÔڵϰ£¬ÇëÇó·½·¨ÊÇÄܱ»Ö´Ðеġ£Õâ¸öÌØÐÔ¿ÉÒÔ·ÀÖ¹ÔÚ¶à¸öPUT²Ù×÷ÖеľºÕù¡£

     Àý:

       If-None-Match: "xyzzy"

       If-None-Match: W/"xyzzy"

       If-None-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"

       If-None-Match: W/"xyzzy", W/"r2d2xxxx", W/"c3piozzzz"

       If-None-Match: *

Èç¹ûÒ»¸öÇëÇóº¬ÓÐIf-None-MatchÍ·Óò£¬»¹º¬ÓÐÒ»¸öIf-Match»òIf-Unmodified-SinceÍ·ÓòµÄ»°£¬´ËÇëÇóµÄÖ¸Ïò½á¹ûÔڴ˹淶ÀïûÓж¨Òå¡£

14.27 If-Range
Èç¹û¿Í»§¶ËÔÚÆäËùÖ¸µÄ»º´æÖÐÓÐÒ»¸öʵÌåµÄ²¿·Ö¸±±¾£¬²¢Ï£ÍûÆä»º´æÖÐÓдËʵÌåµÄÍêÕû¸±±¾£¬ÄÇô´Ë¿Í»§¶ËÓ¦¸ÃÔÚÒ»¸öÌõ¼þGET£¨conditional GET£©£¨ÔÚGETÇëÇóÏûÏ¢ÀïÀûÓÃÁËIf-Unmodified-SinceºÍIf-MatchÍ·Óò£¬»òÀûÓÃÁËÆäÖÐÒ»¸ö£©ÇëÇóÀïÀûÓÃRangeÇëÇóÍ·Óò£¨request-header£©¡£È»¶ø£¬Èç¹ûÓÉÓÚʵÌå±»¸Ä±ä¶øÊ¹Ìõ¼þʧ°Ü£¬ÄÇô´Ë¿Í»§¶Ë¿ÉÄܻᷢ³öµÚ¶þ´ÎÇëÇó´Ó¶øÈ¥»ñµÃÕû¸öµ±Ç°ÊµÌåÖ÷Ì壨entity-body£©¡£

If-RangeÍ·ÓòÔÊÐí¿Í»§¶Ë¶Ì·£¨short-circuit£©µÚ¶þ´ÎÇëÇó¡£ËµµÄͨË×Ò»µã£¬ÕâÒâζ×Å£ºÈç¹ûʵÌåûÓиı䣬·¢ËÍÎÒÏëÒªµÄ²¿·Ö£¨Òë×¢£º·¢ËÍrangeÖ¸Ã÷µÄʵÌ巶Χ£©£»Èç¹ûʵÌå¸Ä±äÁË£¬ÄǾͰÑÕû¸öеÄʵÌå·¢¹ýÀ´¡£

       If-Range = “if-Range” “:”( entity-tag | HTTP-date)

Èô¿Í»§¶ËûÓÐÒ»¸öʵÌåµÄʵÌå±êÇ©£¨entity tag£©£¬µ«ÓÐÒ»¸ö×îºóÐÞ¸ÄÈÕÆÚ£¨Last-Modified date£©£¬Ëü¿ÉÒÔÔÚIf-RangeÍ·ÓòÀïÀûÓôËÈÕÆÚ¡££¨·þÎñÆ÷ͨ¹ý¼ì²éÒ»Á½¸ö×Ö·û¼´¿ÉÇø·ÖºÏ·¨HTTP-dateÓëÈÎÒâÐÎʽµÄentity-tag¡££©If-RangeÍ·ÓòÓ¦¸ÃÖ»ÄÜÓëÒ»¸öRangeÍ·ÓòÒ»ÆðʹÓ㬲¢ÇÒ±ØÐë±»ºöÂÔÈç¹ûÇëÇó²»°üº¬Ò»¸öRangeÍ·Óò»òÕßÈç¹û·þÎñÆ÷²»Ö§³Ö×Ó·¶Î§£¨sub-range£©²Ù×÷¡£

Èç¹ûIf-RangeÍ·ÓòÀï¸ø¶¨µÄʵÌå±êǩƥÅä·þÎñÆ÷Éϵ±Ç°ÊµÌåµÄʵÌå±êÇ©£¨entity tag£©£¬ÄÇô·þÎñÆ÷Ó¦¸ÃÌṩ´ËʵÌåµÄÖ¸¶¨·¶Î§£¬²¢ÀûÓÃ206£¨²¿·ÖÄÚÈÝ£©ÏìÓ¦¡£Èç¹ûʵÌå±êÇ©£¨entity tag£©²»Æ¥Å䣬ÄÇô·þÎñÆ÷Ó¦¸Ã·µ»ØÕû¸öʵÌ壬²¢ÀûÓÃ200£¨ok£©ÏìÓ¦¡£

14.28 If-Unmodified-Since
If-Unmodified-SinceÇëÇóÍ·Óò±»ÓÃÓÚÒ»¸ö·½·¨Ê¹Ö®³ÉΪÌõ¼þ·½·¨¡£Èç¹ûÇëÇó×ÊÔ´×Ô´Ó´ËÍ·ÓòÖ¸¶¨Ê±¼ä¿ªÊ¼Ö®ºóûÓиı䣬ÄÇô·þÎñÆ÷Ó¦¸ÃÖ´ÐдËÇëÇó¾ÍÏñIf-Unmodified-SinceÍ·Óò²»´æÔÚÒ»Ñù¡£

Èç¹ûÇëÇó±äÁ¿£¨variant£¬Òë×¢£º¼ûÊõÓÔÚ´ËÍ·ÓòÖ¸¶¨Ê±¼äºóÒÔºóÒѾ­¸Ä±ä£¬ÄÇô·þÎñÆ÷²»ÄÜÖ´ÐдËÇëÇ󣬲¢ÇÒ±ØÐë·µ»Ø412£¨Ç°ÌáÌõ¼þʧ°Ü£©×´Ì¬Âë¡£

      If-Unmodified-Since = "If-Unmodified-Since" ":" HTTP-ÈÕÆÚ

   ´ËÓòµÄÓ¦ÓÃʵÀý:

       If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT

Èç¹ûÇëÇóÕý³£Çé¿öÏ£¨¼´¼ÙÉèÔÚûÓÐIf-Unmodified-SinceÍ·ÓòµÄÇé¿öÏ£©µ¼ÖÂÈκηÇ2xx»ò412״̬Â룬ÄÇôIf-Unmodified-SinceÍ·Óò½«»áºöÂÔ¡£

Èç¹û´ËÍ·ÓòÖÐÖ¸¶¨µÄÈÕÆÚÎÞЧ£¬ÄÇô´ËÍ·Óò»á±»ºöÂÔ¡£

ÔÚÇëÇóÀïÓÐIf-Unmodified-SinceÍ·Óò²¢ÇÒÓÐIf-None-Match»òÕßIf-Modified-SinceÍ·ÓòÖеÄÒ»¸ö£¬ÕâÖÖÇëÇóµÄ´¦Àí½á¹ûÔڴ˹淶ÖÐûÓб»¶¨Òå¡£

14.29 Last-Modified
Last-ModifiedʵÌåÍ·Óò£¨entity-header£©Ö¸Ã÷Á˱äÁ¿£¨variant£©±»Ô´·þÎñÆ÷ËùÈ·ÐŵÄ×îºóÐ޸ĵÄÈÕÆÚºÍʱ¼ä¡£

       Last-Modified = “Last-Modified” “:” HTTP-date

Ó¦ÓÃʾÀýÈçÏ£º

Last-Modified : Tue, 15 Nov 1994 12:45:26 GMT

´ËÍ·ÓòµÄÈ·Çк¬ÒåÈ¡¾öÓÚÔ´·þÎñÆ÷µÄʵÏÖºÍÔ´×ÊÔ´£¨original resource£©µÄÐÔÖÊ¡£ ¶ÔÎļþ¶øÑÔ£¬Ëü¿ÉÄܽö½öָʾÎļþÉÏ´ÎÐ޸ĵÄʱ¼ä¡£¶ÔÓÚ°üº¬¶¯Ì¬²¿·ÖµÄʵÌå¶øÑÔ£¬Ëü¿ÉÄÜÊÇ×é³ÉÆä¸÷¸ö²¿·ÖÖÐ×îºóÐÞ¸Äʱ¼ä×î½üµÄÄǸö²¿·Ö¡£¶ÔÊý¾Ý¿âÍø¹Ø¶øÑÔ£¬Ëü¿ÉÄÜÊǼǼµÄ×îÐÂÐÞ¸Äʱ¼ä´Á¡£¶ÔÐéÄâ¶ÔÏóÀ´Ëµ£¬Ëü¿ÉÄÜÊÇ×îºóÄÚ²¿×´Ì¬¸Ä±äµÄʱ¼ä¡£

Ô´·þÎñÆ÷²»µÃ·¢ËÍÒ»¸ö³ÙÓÚÏûÏ¢²úÉúʱ¼äµÄLast-ModifiedÈÕÆÚ¡£¼ÙÈç×ÊÔ´×îºóÐÞ¸ÄÈÕÆÚ¿ÉÄÜָʾ½«À´µÄij¸öʱ¼ä£¬´Ë·þÎñÆ÷Ó¦¸ÃÓÃÏûÏ¢²úÉúµÄʱ¼äÌæ»»ÄǸöÈÕÆÚ¡£

Ô´·þÎñÆ÷»ñµÃʵÌåµÄLast-ModifiedÖµÓ¦¸Ã¾¡Á¿¿¿½ü·þÎñÆ÷²úÉúÏìÓ¦µÄDateÖµ¡£ÕâÔÊÐí½ÓÊÕÕß¶ÔʵÌåÐÞ¸Äʱ¼ä×÷³ö׼ȷµÄ¹À¼Æ£¬ÌرðÊÇÈç¹ûʵÌåµÄ¸Ä±äʱ¼ä½Ó½üÏìÓ¦²úÉúµÄʱ¼ä¡£

HTTP/1.1·þÎñÆ÷Ó¦¸Ã·¢ÉúLast-ModifiedÍ·ÓòÎÞÄܺÎʱ¡£

14.30 Location
LocationÏìӦͷÓò±»ÓÃÓÚΪÁËÍê³ÉÇëÇó»òʶ±ðÒ»¸öÐÂ×ÊÔ´£¬Ê¹½ÓÊÕÕßÄÜÖØ¶¨ÏòÓÚLocationָʾµÄURI¶ø²»ÊÇÇëÇóURI¡£¶ÔÓÚ201£¨Created£©ÏìÓ¦¶øÑÔ£¬LocationÊÇÇëÇó½¨Á¢ÐÂ×ÊÔ´µÄλÖ᣶ÔÓÚ3xxÏìÓ¦¶øÑÔ£¬LocationÓ¦¸ÃÖ¸Ã÷ÁË·þÎñÆ÷×Ô¶¯Öض¨Ïò×ÊԴϲ°®µÄURI¡£LocationÍ·ÓòÖµÓÉÒ»¸ö¾ø¶ÔURI×é³É¡£

       Location = “Location” “:” absoluteURI

Ò»¸öÀý×ÓÈçÏ£º

 Location : http://www.w3.org/pub/WWW/People.html

×¢: Content-LocationÍ·Óò£¨14.14½Ú£©²»Í¬ÓÚLocationÍ·Óò£¬Content-LocationÍ·ÓòÖ¸¶¨ÁËÇëÇóÀï·âװʵÌåµÄԴλÖá£ÓпÉÄÜÒ»¸öÏìÓ¦¼´°üº¬locationÒ²°üº¬Content-LocationÍ·Óò¡£ÔÚ13.10½ÚÀïÓйØÓÚһЩ·½·¨µÄÒªÇó¡£

14.31 Max-Forwards
Max-ForwardsÇëÇóÍ·ÓòÌṩһÖÖ»úÖÆ£¬ÄǾÍÊÇÀûÓÃTRACE£¨9.8½Ú£©ºÍOPTIONS£¨9.2½Ú£©·½·¨È¥ÏÞÖÆ´úÀí»òÍø¹ØµÄÊýÁ¿£¬ÕâЩ´úÀí»òÍø¹ØÄÜ´«µÝÇëÇóµ½ÏÂÒ»¸öÈëÁ÷£¨inbound£©·þÎñÆ÷¡£ÕâÊǷdz£ÓаïÖúµÄ£¬µ±¿Í»§¶Ë³¢ÊÔÈ¥¸ú×ÙÒ»¸öºÃÏñÏÝÈëʧ°Ü»òÏÝÈëÑ­»·µÄÇëÇóÁ´Ê±¡£

       Max-Forwards = “Max – Forwards” “:” 1*DIGIT

Max-ForwardsÖµÊÇÊ®½øÖƵÄÕûÊý£¬ËüÖ¸¶¨ÁËÇëÇóÏûϢʣÓàÖØ¶¨ÏòµÄ´ÎÊý¡£

¶ÔÓÚÒ»¸öTRACE»òOPTIONSÇëÇó£¬Èç¹û°üº¬Ò»¸öMax-ForwardsÍ·Óò£¬ÄÇô½ÓÊÕ´ËÇëÇóµÄ´úÀí»òÍø¹Ø±ØÐëÄÜÔÚת·¢£¨forwarding£©´ËÇëÇó֮ǰ¼ì²éºÍ¸üÐÂMax-ForwardsÍ·ÓòÖµ¡£Èç¹û½ÓÊÕµÄֵΪ0£¬ÄÇô½ÓÊÕÕß²»ÄÜת·¢´ËÇëÇó£»¶øÊÇ£¬Ëü±ØÐë×÷Ϊ×îºóµÄ½ÓÊÕÕßÏìÓ¦¡£Èç¹û½ÓÊÕµÄMax-ForwardsÖµ±È0´ó£¬ÄÇô´Ëת·¢µÄÏûÏ¢±ØÐë°üº¬Ò»¸ö¸üÐÂÁ˵ÄMax-ForwardsÍ·Óò£¬¸üеÄÖµÊÇÔÚ½ÓÊÕʱµÄÖµÉϼõÈ¥1¡£

¶Ô±¾¹æ·¶¶¨ÒåµÄËùÓÐÆäËü·½·¨ÒÔ¼°ÈκÎûÓÐÃ÷È·×÷Ϊ·½·¨¶¨Ò岿·ÖµÄÀ©Õ¹·½·¨µÄÇëÇóÀMax-ForwardsÍ·Óò¿ÉÄܻᱻºöÂÔ¡£

14.32 Pragma
Pragma³£ÓÃÍ·Óò±»ÓÃÓÚ°üº¬Ìض¨Ö´ÐÐÖ¸ÁÕâЩָÁî¿ÉÄܱ»Ó¦ÓÃÓÚÇëÇó/ÏìÓ¦Á´ÖÐÈκνÓÊÕÕß¡£´ÓЭÒéµÄ¹ÛµãÀ´¿´£¬pragmaÖ¸ÁîÖ¸¶¨µÄÐÐΪÊÇ¿ÉÑ¡µÄ£»È»¶ø£¬Ò»Ð©ÏµÍ³¿ÉÄÜÒªÇóÐÐΪ±ØÐëÂú×ãÖ¸ÁîµÄÒªÇó¡£

       Pragma               = “Pragma” “:” 1#pragma-directive

       pragma-directive =”no-cache” | extension-pragma

       extension-pragma       =token [ “=” ( token | quoted-string) ]

µ±no-cacheÖ¸Áî³öÏÖÔÚÇëÇóÏûÏ¢ÖУ¬Ó¦ÓóÌÐòÓ¦¸Ãת·¢£¨forward£©´ËÇëÇóµ½Ô´·þÎñÆ÷£¬¼´Ê¹ËüÓµÓдËÇëÇóÏìÓ¦µÄ»º´æ¸±±¾¡£pragmaÖ¸ÁîºÍno-cache»º´æ¿ØÖÆÖ¸Á¼û14.9£©ÓÃÏàͬµÄÓïÒ壬²¢ÇÒËüΪÁËͬHTTP/1.0Ïòºó¼æÈݶø¶¨ÒåµÄ¡£µ±Ò»¸öno-cacheÇëÇó·¢Ë͸øÒ»¸ö²»×ñÑ­HTTP/1.1µÄ·þÎñÆ÷ʱ£¬¿Í»§¶ËÓ¦¸Ã¼´°üº¬pragmaÖ¸ÁҲӦ¸Ã°üº¬no-cache»º´æ¿ØÖÆÖ¸Áî¡£

pragmaÖ¸Áî±ØÐëÄÜ´©¹ý´úÀíºÍÍø¹ØÓ¦ÓóÌÐò£¬²»¹Ü¶ÔÓÚÄÇЩӦÓóÌÐòÓÐûÓÐÒâÒå¡£ÒòΪÕâЩָÁî¿ÉÄܶÔÇëÇó/ÏìÓ¦Á´ÉϵÄËùÓнÓÊÜÕßÓÐÓᣲ»¿ÉÄÜΪһ¸öÌØ¶¨µÄ½ÓÊÕÕß¶¨ÒåÒ»¸öpragma£»È»¶ø£¬ÈκζԽÓÊÕÕß²»Ïà¹ØµÄpragmaÖ¸Áî¶¼Ó¦¸Ã±»½ÓÊÕÕߺöÂÔ¡£

HTTP/1.1»º´æÓ¦¸Ã°Ñ"Pragma£ºno_cache"µ±×÷ºÃÏñ¿Í»§¶Ë·¢ËÍÁË"cache_control:no-cache"¡£ÔÚHTTPÖв»»áÓÐеÄpragmaÖ¸Áî»á±»¶¨Òå¡£

14.33 Proxy-Authenticate
Proxy-AuthenticateÏìӦͷÓò±ØÐë±»°üº¬ÔÚ407ÏìÓ¦£¨´úÀíÊÚȨ£©Àï¡£´ËÍ·ÓòÖµÓÉÒ»¸öchallengeºÍparameters×é³É£¬challengeÖ¸Ã÷ÁËÊÚȨ·½°¸£¬¶øparametersÓ¦ÓÃÓÚ´ËÇëÇóURIµÄ´úÀí¡£

       Proxy-Authenticate = "Proxy-Authenticate" ":" 1#challenge

¹ØÓÚHTTP·ÃÎÊÊÚȨ¹ý³ÌµÄÃèÊöÔÚ“HTTP Authentication£ºBasic and Digest Access Authentication”[43]ÖнéÉÜÁË¡£²»ÏñWWW-AuthenticateÍ·Óò£¬Proxy-AuthenticateÍ·ÓòÖ»ÄÜÓ¦ÓÃÓÚµ±Ç°Á¬½Ó£¬²¢ÇÒ²»Ó¦¸Ã´«µÝ¸øÏÂÐУ¨downstrem£©¿Í»§¶Ë¡£È»¶ø£¬Ò»¸öÖмä´úÀí¿ÉÄÜÐèÒª´ÓÇëÇóÏÂÐпͻ§¶Ë¶ø»ñµÃËü×Ô¼ºµÄÖ¤Ê飨credentials£©£¬ÕâÔÚһЩÇé¿öϾͺÃÏñ´úÀíÕýÔÚת·¢Proxy-AuthenticateÍ·ÓòÒ»Ñù¡£

14.34 Proxy-Authorization
Proxy-AuthorizationÇëÇóÍ·ÓòÔÊÐí¿Í»§¶ËÈÃÒ»¸öÐèÒªÊÚȨµÄ´úÀíÄܸø×Ô¼º£¨»ò¿Í»§¶ËµÄÓû§£©ÊÚȨ¡£Proxy-AuthorizationÍ·ÓòÖµÓɰüº¬Óû§´úÀíÊÚȨÐÅÏ¢µÄÖ¤Êé×é³É£¬´ËÊÚȨÐÅÏ¢ÊǹØÓÚ¶Ô´úÀíºÍ/»òÇëÇó×ÊÔ´ÓòÀ´ËµµÄ¡£

       Proxy-Authorization = “Proxy-Authorization” “:” credentials

HTTP·ÃÎÊÊÚȨ¹ý³ÌÔÚ“HTTP Authentication: Basic and Digest Access Authentication”[43]ÖÐÃèÊö¡£²»ÏñAuthorizationÍ·Óò£¬Proxy-AuthorizationÍ·ÓòÖ»ÄÜÓ¦ÓÃÓÚÏÂÒ»¸öÀûÓÃProxy-AuthenticateÍ·Óò½øÐÐÊÚȨµÄÊä³ö´úÀí¡£

14.35 Range
14.35.1×Ö½Ú·¶Î§ £¨Byte Ranges£©
¼ÈÈ»ËùÓеÄHTTPʵÌå¶¼ÒÔ×Ö½ÚÐòÁÐÐÎʽµÄHTTPÏûÏ¢±íʾ£¬ÄÇô×Ö½Ú·¶Î§µÄ¸ÅÄî¶ÔÈκÎHTTPʵÌå¶¼ÊÇÓÐÒâÒåµÄ.£¨²»¹ý²¢²»ÊÇËùÓеĿͻ§ºÍ·þÎñÆ÷¶¼ÐèÒªÖ§³Ö×Ö½Ú·¶Î§²Ù×÷.¡££©

HTTPÀïµÄ×Ö½Ú·¶Î§Ó¦ÓÃÓÚʵÌåÖ÷ÌåµÄ×Ö½ÚÐòÁУ¨²»±ØºÍÏûÏ¢Ö÷ÌåÒ»Ñù£©¡£

×Ö½Ú·¶Î§²Ù×÷¿ÉÄÜ»áÔÚÒ»¸öʵÌåÀïÖ¸¶¨Ò»¸ö×Ö½Ú·¶Î§»ò¶à¸ö×Ö½Ú·¶Î§¡£

       ranges-specifier = byte-ranges-specifier

       byte-ranges-specifier = bytes-unit "=" byte-range-set

       byte-range-set = 1#£¨ byte-range-spec | suffix-byte-range-spec £©

       byte-range-spec = first-byte-pos "-" [last-byte-pos]

       first-byte-pos = 1*DIGIT

       last-byte-pos   = 1*DIGIT

byte-range-specÀïµÄfirst-byte-posÖµ¸ø³öÁËÒ»¸ö·¶Î§ÀïµÚÒ»¸ö×Ö½ÚµÄÆ«ÒÆÁ¿.¡£last-byte-posÖµ¸ø³öÁËÕâ¸ö·¶Î§Àï×îºóÒ»¸ö×Ö½ÚµÄÆ«ÒÆÁ¿£»Ò²¾ÍÊÇ˵£¬È·¶¨µÄ×Ö½ÚλÖñØÐëÔÚʵÌåµÄ·¶Î§Ö®ÄÚ¡£×Ö½ÚÆ«ÒÆÊÇÒÔ0Ϊ»ù×¼£¨Òë×¢£º0´ú±íµÚÒ»¸ö×Ö½Ú£¬1´ú±íµÚ¶þ¸ö×Ö½Ú£©¡£

Èç¹û´æÔÚlast-byte-posÖµ£¬ÄÇôËüÒ»¶¨´óÓÚ»òµÈÓÚÄǸöbyte-range-specÀïµÄfirst-byte-pos£¬·ñÔòbyte-range-specÔھ䷨ÉÏÊÇ·Ç·¨µÄ¡£½ÓÊÕÕß½ÓÊÕµ½°üÀ¨Ò»¸ö»ò¶à¸öÎÞЧµÄbyte-range-specÖµµÄbyte-range-setʱ£¬Ëü±ØÐëºöÂÔ°üº¬ÄǸöbyte-range-setµÄÍ·Óò.¡£

Èç¹ûlast-byte-posÖµ²»´æÔÚ£¬»òÕß´óÓÚ»òµÈÓÚʵÌåÖ÷ÌåµÄµ±Ç°³¤¶È£¬ÔòÈÏΪlast-byte-posµÈÓÚµ±Ç°ÊµÌåÖ÷Ì峤¶È¼õÒ»¡£

ͨ¹ýÑ¡Ôñlast-byte-pos£¬¿Í»§Äܹ»ÏÞÖÆ»ñµÃʵÌåµÄ×Ö½ÚÊýÁ¿¶ø²»ÐèÒªÖªµÀʵÌåµÄ´óС¡£

       suffix-byte-range-spec = “-“ suffix-length

       suffix-length = 1*DIGIT

suffix-byte-range-specÓÃÀ´±íʾʵÌåÖ÷ÌåµÄºó׺£¬Æä³¤¶ÈÓÉsuffix-lengthÖµ¸ø³ö.¡££¨Ò²¾ÍÊÇ˵£¬ÕâÖÖÐÎʽ¹æ¶¨ÁËʵÌåÕýÎĵÄ×îºóN¸ö×Ö½Ú¡££©Èç¹ûʵÌå¶ÌÓÚÖ¸¶¨µÄsuffix-length£¬ÔòʹÓÃÕû¸öʵÌåÖ÷Ìå¡£

Èç¹ûÒ»¸ö¾ä·¨ÕýÈ·µÄbyte-range-setÖÁÉÙ°üÀ¨Ò»¸öÕâÑùµÄbyte-range-spec£¬ËüµÄfirst-byte-pos±ÈʵÌåÖ÷ÌåµÄµ±Ç°³¤¶ÈҪС£¬»òÖÁÉÙ°üÀ¨Ò»¸ösuffix-length·ÇÁãµÄ suffix-byte-range-spec£¬ÄÇôbyte-range-setÊÇ¿ÉÒÔÂú×ãµÄ£¬·ñÔòÊDz»¿ÉÂú×ãµÄ¡£Èç¹ûbyte-range-set²»ÄÜÂú×㣬ÄÇô·þÎñÆ÷Ó¦¸Ã·µ»ØÒ»¸ö416ÏìÓ¦£¨ÇëÇó·¶Î§²»ÄÜÂú×㣩¡£·ñÔò£¬·þÎñÆ÷Ó¦¸Ã·µ»ØÒ»¸ö206ÏìÓ¦£¨²¿·ÖÄÚÈÝ£©

byte-ranges-specifier£¨×Ö½Ú-·¶Î§-˵Ã÷·û£©ÖµµÄÀý×Ó£¨¼Ù¶¨ÊµÌåÖ÷ÌåµÄ³¤¶ÈΪ10000£©:

-- µÚÒ»¸ö500×Ö½Ú£¨×Ö½ÚÆ«ÒÆÁ¿0-499,°üÀ¨0ºÍ499£©: bytes=0-499

-- µÚ¶þ¸ö500×Ö½Ú£¨×Ö½ÚÆ«ÒÆÁ¿500-999,°üÀ¨500ºÍ999£©: bytes=500-999

-- ×îºó500×Ö½Ú£¨×Ö½ÚÆ«ÒÆÁ¿9500-9999,°üÀ¨9500ºÍ9999£©: bytes=-500 »ò bytes=9500-

-- ½ö½öµÚÒ»¸öºÍ×îºóÒ»¸ö×Ö½Ú£¨×Ö½Ú0ºÍ9999£©: bytes=0-0,-1  

-- ¹ØÓÚµÚ¶þ¸ö500×Ö½Ú£¨×Ö½ÚÆ«ÒÆÁ¿500-999,°üÀ¨500ºÍ999£©µÄ¼¸ÖֺϷ¨µ«²»¹æ·¶µÄÐðÊö:

         bytes=500-600,601-999

         bytes=500-700,601-999

14.35.2·¶Î§ÇëÇó£¨Range Retrieval Requests£©
ʹÓÃÌõ¼þ»òÎÞÌõ¼þGET·½·¨¿ÉÒÔÇëÇóÒ»¸ö»ò¶à¸öʵÌåµÄ×Ö½Ú·¶Î§£¬¶ø²»ÊÇÕû¸öʵÌ壬ÕâÀûÓÃRangeÇëÇóÍ·Óò£¬ÇëÇ󷵻صĽá¹û¾ÍÊÇRangeÍ·ÓòָʾµÄÇëÇó×ÊԴʵÌåµÄ·¶Î§¡£

     Range = "Range" ":" ranges-specifier

·þÎñÆ÷¿ÉÒÔºöÂÔRangeÍ·Óò¡£È»¶ø£¬.HTTP/1.1Ô´·þÎñÆ÷ºÍÖм仺´æ±¾Ó¦¸Ã¾¡¿ÉÄÜÖ§³Ö×Ö½Ú·¶Î§£¬ÒòΪRange¸ßЧµØÖ§³Ö´Ó²¿·Ö´«Êäʧ°ÜµÄ»Ö¸´£¬²¢ÇÒÖ§³Ö¸ßЧµØ´Ó´óµÄʵÌåÖлñÈ¡²¿·ÖÄÚÈÝ¡£

Èç¹û·þÎñÆ÷Ö§³ÖRangeÍ·Óò£¬²¢ÇÒÖ¸¶¨µÄ·¶Î§»ò¶à¸ö·¶Î§¶ÔʵÌåÀ´ËµÊÇÊʺϵģº

1.        Èç¹ûÔÚÎÞÌõ¼þGETÇëÇóÀï³öÏÖRangeÍ·Óò£¬ÄÇôÕ⽫»á¸Ä±ä·µ»Ø½á¹û£¨Òë×¢£º±¾À´ÊÇ·µ»ØÕû¸öʵÌ壬µ«³öÏÖRangeÍ·Óòºó£¬¾Í·µ»ØÁËÒ»²¿·Ö£©Èç¹ûGETÇëÇó¼ÙÉèÔÚûÓÐRangeÍ·Óòʱ±»·þÎñÆ÷³É¹¦´¦Àí¡£»»¾ä»°Ëµ£¬·µ»ØµÄ״̬Âë²»ÊÇ200£¨ok£©¶øÊÇ206£¨²¿·ÖÏìÓ¦£©¡£

2.        Èç¹ûÔÚÌõ¼þGET£¨ÇëÇóÀïÀûÓÃÁËIf-Modified-SinceºÍIf-None-MatchÖÐÈÎÒâÒ»¸ö»òËûÃÇÁ½¸ö£¬»òÕßÀûÓÃÁËIf-Unmodified-SinceºÍIf-MatchÖеÄÈÎÒâÒ»¸ö»òËûÃÇÁ½¸ö£©ÇëÇóÀï³öÏÖRangeÍ·Óò£¬ÄÇôÕ⽫¸Ä±ä·µ»ØµÄ½á¹û£¬Èç¹ûGETÇëÇó¼ÙÉèÔÚûÓÐRangeÍ·Óòʱ±»·þÎñÆ÷³É¹¦³É¹¦²¢ÇÒÌõ¼þÎªÕæ¡£µ«Ëü²»»áÓ°Ïì304£¨Ã»Óиı䣩ÏìÓ¦µÄ·µ»ØÈç¹ûÌõ¼þΪ¼Ù¡£

ijЩÇéÐÎÏ£¬³ýÁËʹÓÃRangeÍ·ÓòÍ⣬ʹÓÃIf-RangeÍ·Óò£¨¼û14.27½Ú£©¿ÉÄܸüºÏÊÊ¡£

Èç¹ûÖ§³Ö·¶Î§ÇëÇóµÄ´úÀí½ÓÊÕÁËÒ»¸ö·¶Î§ÇëÇó£¬Ëü»áת·¢£¨forward£©´ËÇëÇóµ½ÈëÁ÷£¨inbound£©·þÎñÆ÷£¬²¢ÇÒ½ÓÊÕÕû¸ö·µ»ØÊµÌ壬µ«ËüÖ»ÊÇ·µ»Ø¸ø¿Í»§µÄÇëÇóµÄ·¶Î§¡£´úÀí½«½ÓÊÕµÄÕû¸öÏìÓ¦´æ´¢µ½ËüµÄ»º´æÀïÈç¹û´ËÏìÓ¦Âú×㻺´æ·ÖÅä²ßÂÔ¡£

14.36 Referer
RefererÇëÇóÍ·Óò£¬ÎªÁ˶ԷþÎñÆ÷ÓÐÓã¬ÔÊÐí¿Í»§Ö¸¶¨Ä³×ÊÔ´µÄURI£¬¿Í»§¶Ë´Ó´Ë×ÊÔ´»ñµÃµÄÇëÇóURIµÄµØÖ·£¨RefererÍ·ÓòµÄReferer±¾Ó¦¸Ãд³ÉReferrer£¬³öÏÖÁ˱ÊÎ󣩡£RefererÇëÇóÍ·ÓòÔÊÐí·þÎñÆ÷²úÉú·µ»Øµ½×ÊÔ´µÄURIÁ´½ÓµÄÁÐ±í¡£ËüÕÕÑùÔÊÐí·þÎñÆ÷Ϊά»¤¶ø¸ú×Ù¹ýʱ»òд´íµÄÁ´½Ó¡£RefererÍ·Óò²»Äܱ»·¢ËÍÈç¹ûÇëÇóURI´ÓÒ»¸ö±¾ÉíûÓÐURIµÄ×ÊÔ´»ñµÃ£¬ÀýÈçÓû§´Ó¼üÅÌÊäÈë¡£

»ñµÃÇëÇóURIµÄ×ÊÔ´µØÖ·£¨URI£©-ΪÁË·þÎñÆ÷µÄÀûÒæ.RefererÇëÇóÍ·ÔÊÐí·þÎñÆ÷Éú³É¹ØÓÚµ½×ÊÔ´µÄ·´ÏòÁ¬½Ó£¨back-link£©µÄÁбí,ΪÁËÐËȤ,¼Ç¼,ÓÅ»¯µÄ¸ßËÙ»º´æµÈµÈ.ËüÒ²ÔÊÐí×·×Ù¹ýʱµÄ»ò´íÎóÀàÐ͵ÄÁ¬½Ó£¨link£©ÒÔ±ãά»¤.Èç¹ûÇëÇóURIÊÇ´ÓÒ»¸öûÓÐ×Ô¼ºµÄURIµÄÔ´»ñµÃµÄ,Èç´ÓʹÓÃÕß¼üÅ̵ÄÊäÈë,ÄÇôһ¶¨²»Òª·¢ËÍRefererÓò.

       Referer   = "Referer" ":" £¨ absoluteURI | relativeURI £©

 ÀýÈç:

       Referer: http://www.w3.org/hypertext/DataSources/Overview.html

Èç¹ûRefererÍ·ÓòµÄÓòÖµÊÇÏà¶ÔURI£¬ÄÇôËü½«±»½âÎöΪÏà¶ÔÓÚÇëÇóURI¡£URI²»Äܰüº¬Ò»¸öƬ¶Î¡£¼û15.1.3¹ØÓÚ°²È«µÄ¿¼ÂÇ¡£

14.37 Retry-After
Retry-AfterÏìӦͷÓòÄܱ»ÓÃÓÚÒ»¸ö503£¨·þÎñ²»¿ÉµÃ£©ÏìÓ¦£¬·þÎñÆ÷ÓÃËüÀ´ÏòÇëÇó¶ËÖ¸Ã÷·þÎñ²»¿ÉµÃµÄʱ³¤¡£´ËÍ·Óò¿ÉÄܱ»ÓÃÓÚ3xx£¨Öض¨Ïò£©ÏìÓ¦£¬·þÎñÆ÷ÓÃËüÀ´£¨Èçwebä¯ÀÀÆ÷£©Ö¸Ã÷Óû§´úÀíÔÙ´ÎÌá½»ÒÑÖØ¶¨ÏòÇëÇó֮ǰµÄ×îСµÈ´ýʱ¼ä¡£Retry-AfterÍ·ÓòÖµ¿ÉÄÜÊÇHTTP-date»òÕßÒ²¿ÉÄÜÊÇÒ»¸öÏìӦʱ¼äºóµÄÊ®½øÖÆÕûÊýÃë¡£

       Retry-After = “Retry-After” “:” ( HTTP-date | delta-seconds )

ÏÂÃæÊÇËüµÄÁ½¸öÀý×Ó

       Retry-After: Fri,31 Dec 1999 23:59:59 GMT

       Retry-After:120

ÔÚºóÒ»Àý×ÓÖУ¬ÑÓ³Ùʱ¼äÊÇ2·ÖÖÓ¡£

14.38 Server
ServerÏìӦͷÓò°üº¬ÁËÔ´·þÎñÆ÷ÓÃÓÚ´¦ÀíÇëÇóµÄÈí¼þÐÅÏ¢¡£ ´ËÓò¿É°üº¬¶à¸ö²úÆ·±ê¼Ç£¨3.8½Ú£©£¬ÒÔ¼°¼ø±ð·þÎñÆ÷ÓëÆäËûÖØÒª×Ó²úÆ·µÄ×¢ÊÍ¡£²úÆ·±ê¼Ç°´ËüÃǵÄÖØÒªÐÔÀ´ÅÅÁУ¬²¢¼ø±ðÓ¦ÓóÌÐò¡£

       Server = “Server”

Àý£º

·þÎñÆ÷£ºCERN/3.0 libwww/2.17

ÈôÏìÓ¦ÊÇͨ¹ý´úÀí·þÎñÆ÷ת·¢µÄ£¬Ôò´úÀí³ÌÐò²»µÃÐ޸ķþÎñÆ÷ÏìӦͷÓò¡£×÷ÎªÌæ´ú£¬ËüÓ¦¸Ã°üº¬Ò»¸öViaÍ·Óò£¨ÔÚ14.45½ÚÀïÃèÊö£©¡£

×¢£º½ÒÊ¾ÌØ¶¨µÄÈí¼þ°æ±¾¿ÉÄÜ»áʹ·þÎñÆ÷Ò×ÓÚÊܵ½ÄÇЩÕë¶ÔÒÑÖª°²È«Â©¶´µÄÈí¼þµÄ¹¥»÷¡£ ½¨Òé·þÎñÆ÷ʵÏÖÕß½«´ËÓò×÷Ϊ¿ÉÉèÖÃÏî¡£

14.39 TE
TEÇëÇóÍ·ÓòÖ¸Ã÷¿Í»§¶Ë¿ÉÒÔ½ÓÊÜÄÄЩ´«Êä±àÂ루transfer-coding£©µÄÏìÓ¦£¬ºÍÊÇ·ñÔ¸Òâ½ÓÊտ飨chunked£©´«Êä±àÂëÏìÓ¦µÄβ²¿£¨trailer£©£¨Òë×¢£ºTEÍ·ÓòºÍAccept-EncodingÍ·ÓòÓëContent-EncodingÍ·ÓòºÜÏàËÆ£¬µ«TEÓ¦ÓÃÓÚ´«Êä±àÂ루transfer coding£©£¬¶øContent-EncodingÓ¦ÓÃÓÚÄÚÈݱàÂ루content coding£¬¼û3.5½Ú£©£©¡£ TEÇëÇóÍ·ÓòµÄÖµ¿ÉÄÜÓɰüº¬¹Ø¼ü×Ö“trailers” ºÍ/»òÓöººÅ·Ö¸ôµÄÀ©Õ¹´«Êä±àÂëÃû£¨À©Õ¹´«Êä±àÂëÃû¿ÉÄÜ»áЯ´ø¿ÉÑ¡µÄ½ÓÊܲÎÊýµÄÁÐ±í£©£¨ÔÚ3.6½ÚÃèÊö£©×é³É¡£

 TE        = "TE" ":" #£¨ t-codings £©

 t-codings = "trailers" | £¨ transfer-extension [ accept-params ] £©

Èç¹û³öÏֹؼü×Ö“trailers”£¬ÄÇôËüÖ¸Ã÷¿Í»§¶ËÔ¸Òâ½ÓÊÜ£¨chunked£©´«Êä±àÂëÏìÓ¦µÄβ²¿£¨trailer£©¡£ ´Ë¹Ø¼ü×ÖΪ´«Êä±àÂ루transfer-coding£©Öµ¶ø±£Áô£¬µ«Ëü±¾Éí²»´ú±íÒ»ÖÖ´«Êä±àÂë¡£

¾ÙÀý£º

       TE: deflate

       TE:

       TE: trailers, deflate;q=0.5

TEÇëÇóÍ·Óò½öÊÊÓÃÓÚÁ¢¼´Á¬½Ó¡£ËùÒÔÎÞÂÛºÎʱ£¬Ö»ÒªÔÚHTTP/1.1ÏûÏ¢ÖдæÔÚTEÍ·Óò£¬Á¬½ÓÍ·Óò£¨Connection header filed£©£¨²Î¼û14.10½Ú£©ÖоͱØÐëÖ¸Ã÷¡£

ͨ¹ýTEÍ·Óò£¬·þÎñÆ÷ÄÜÀûÓÃÏÂÊö¹æÔòÀ´²âÊÔ´«Êä±àÂ루transfer-coding£©ÊÇ·ñÊǿɱ»¿Í»§¶Ë½ÓÊܵģº

¿é£¨chunked£©´«Êä±àÂë×ÜÊÇ¿ÉÒÔ½ÓÊܵģ¨Òë×¢£ºËùÒÔ²»ÐèÒªÔÚTEÍ·ÓòÀïÖ¸¶¨¿é£¨chunked£©´«Êä±àÂ룬ÒòΪÇëÇó¶Ë×ÜÊÇ¿ÉÒÔ½ÓÊÕ¿é´«Êä±àÂ룩¡£Èç¹ûÔÚTEÍ·ÓòÀï³öÏֹؼü×Ö“trailers”£¬ÄÇô¿Í»§¶ËÖ¸Ã÷ËüÔ¸Òâ½ÓÊܿ飨chunked£©´«Êä±àÂëÏìÓ¦ÀïµÄβ²¿£¨trailer£©¡£ÕâÒâζ×ſͻ§¶Ë»òÕßÕýÔÚÉùÃ÷ËùÓеÄÏÂÓοͻ§¶ËÔ¸Òâ½ÓÊտ飨chunked£©´«Êä±àÂëÏìÓ¦ÀïµÄβ²¿£¨trailer£©£¬»òÕßÉùÃ÷ËüÔ¸Òâ´ú±íÏÂÓνÓÊÕ¶ËÈ¥³¢ÊÔ»º´æÏìÓ¦¡£

×¢Ò⣺HTTP/1.1²¢Ã»Óж¨ÒåÈκη½·¨È¥ÏÞÖÆ¿é´«Êä±àÂëÏìÓ¦µÄ´óС£¬ÕâÊÇΪÁË·½±ã¿Í»§¶ËÄÜ»º´æÕû¸öÏìÓ¦¡£

Ö»ÒªÊdzöÏÖÔÚTEÍ·ÓòÀïµÄ´«Êä±àÂë¶¼Êǿɱ»ÇëÇó¶Ë½ÓÊܵ쬳ý·Ç´Ë´«Êä±àÂë¸úËæµÄqvalueֵΪ0£¨¸ù¾Ý3.9½ÚÖж¨Ò壬qvalueΪ0±íÃ÷ÊÇ“²»¿É½ÓÊܵĔ£¨not acceptable£©£©£©

Èç¹ûÔÚTEÍ·ÓòÀïÓÐÖ¸Ã÷¶à¸ö´«Êä±àÂëÊǿɽÓÊܵģ¬ÄÇô´«Êä±àÂ루transfer-coding£©µÄqvalueÖµ×î´óµÄÊÇ×îÈÝÒ×±»±»½ÓÊܵġ£¿é´«Êä±àÂëµÄqvalueֵΪ1¡£

Èç¹ûTEÍ·ÓòÖµÊǿյĻòÕßTEÍ·ÓòûÓгöÏÖÔÚÏûÏ¢ÀÄÇô·þÎñÆ÷Ö»ÄÜÈÏΪ¿é£¨chunked£©´«Êä±àÂëµÄÏìÓ¦ÊÇÇëÇó¶Ë¿ÉÒÔ½ÓÊܵġ£Ã»Óд«Êä±àÂëµÄÏûÏ¢×ÜÊǿɽÓÊܵġ£

14.40 Trailer
Trailer³£ÓÃÍ·ÓòÖµÖ¸Ã÷ÁËÔÚÒԿ飨chunked£©´«Êä±àÂëÏûÏ¢ÀïµÄβ²¿£¨trailer£©ÀïÓõ½µÄÍ·Óò¡£

                  Trailer = "Trailer" ":" 1#field-name

Ò»¸öHTTP/1.1ÏûÏ¢»á°üº¬Ò»¸öTrailerÍ·Óò£¬Èç¹ûËüÀûÓÃÁ˿飨chunked£©´«Êä±àÂë²¢ÇÒ±àÂëÀïµÄβ²¿£¨trailer£©²»Îª¿Õ¡£ÕâÑù×öÊÇΪÁËʹ½ÓÊÕ¶ËÖªµÀ¿é£¨chunked£©´«Êä±àÂëÏìÓ¦ÏûϢβ²¿£¨trailer£©ÓÐÄÄЩͷÓò¡£

Èç¹û¾ßÓп鴫Êä±àÂëµÄÏûÏ¢£¬Ã»ÓÐTrailerÍ·Óò´æÔÚ£¬Ôò´ËÏûÏ¢µÄβ²¿£¨trailer£©½«²»ÄܰüÀ¨ÈκÎÍ·Óò¡£3.6.1½ÚչʾÁ˿鴫Êä±àÂëµÄβ²¿£¨trailer£©µÄÀûÓÃÏÞÖÆ¡£

TrailerÍ·ÓòÖÐָʾµÄÏûϢͷÓò²»ÄܰüÀ¨ÏÂÃæµÄÍ·Óò£º

.Transfer-Encoding

.Content-Length

.Trailer

 

14.41 Transfer-Encoding
´«ÊäÒëÂ루Transfer-Encoding£©³£ÓÃÍ·ÓòָʾÁËÏûÏ¢Ö÷Ì壨message body£©µÄ±àÂëת»»£¬ÕâÊÇΪÁËʵÏÖÔÚ½ÓÊն˺ͷ¢ËͶËÖ®¼äµÄ°²È«Êý¾Ý´«Êä¡£Ëü²»Í¬ÓÚÄÚÈݱàÂ루content-coding£©£¬´«Êä´úÂëÊÇÏûÏ¢µÄÊôÐÔ£¬¶ø²»ÊÇʵÌ壨entity£©µÄÊôÐÔ¡£

       Transfer-Encoding       = "Transfer-Encoding" ":" 1#transfer-coding

 ´«Êä±àÂ루transfer-coding£©ÔÚ3.6½ÚÖб»¶¨ÒåÁË¡£Ò»¸öÀý×ÓÊÇ£º

         Transfer-Encoding: chunked

Èç¹ûÒ»¸öʵÌåÓ¦ÓÃÁ˶àÖÖ´«Êä±àÂ룬´«Êä±àÂ루transfer-coding£©±ØÐëÒÔÓ¦ÓõÄ˳ÐòÁгö¡£´«Êä±àÂ루transfer-coding£©¿ÉÄÜ»áÌṩ±àÂë²ÎÊý£¨Òë×¢£º¿´´«Êä±àÂëµÄ¶¨Òå,3.6½Ú£©£¬ÕâЩ±àÂë²ÎÊý¶îÍâµÄÐÅÏ¢¿ÉÄܻᱻÆäËüʵÌåÍ·Óò£¨entity-header£©Ìṩ£¬µ«ÕⲢûÓÐÔڹ淶ÀﶨÒå¡£

 

Ðí¶àÀϵÄHTTP/1.1Ó¦ÓóÌÐò²»ÄÜÀí½â´«ÊäÒëÂ루Transfer-Encoding£©Í·Óò¡£

14.42 Upgrade
Upgrade³£ÓÃÍ·ÓòÔÊÐí¿Í»§¶ËÖ¸¶¨ËüÖ§³ÖʲôÑùµÄ¸½¼Ó´«ÊäЭÒ飬Èç¹û·þÎñÆ÷»áÇл»µ½UpgradeÖ¸¶¨µÄЭÒéÈç¹ûËü¾õµÃºÏÊʵϰ¡£·þÎñÆ÷±ØÐëÀûÓÃUpgradeÍ·ÓòÓÚÒ»¸ö101£¨Çл»Ð­Ò飩ÏìÓ¦ÀÓÃÀ´Ö¸Ã÷½«ÄĸöЭÒé±»Çл»ÁË¡£

       Upgrade = “Upgrade” “:” 1#product

ÀýÈ磬

       Upgrade: HTTP/2.0£¬SHTTP/1.3, IRC/6.9, RTA/x11

UpgradeÍ·ÓòµÄÄ¿µÄÊÇΪÁËÌṩһ¸ö´ÓHTTP/1.1µ½ÆäËü²»¼æÈÝЭÒéµÄ¼òµ¥Ç¨ÒÆ»úÖÆ¡£ÕâÑù×öÊÇͨ¹ýÔÊÐí¿Í»§¶Ë֪ͨ×Ô¼ºÆÚÍûʹÓÃÁíÒ»ÖÖЭÒéÀ´ÊµÏֵģ¬ÀýÈç¸üа汾µÄHTTPЭÒ飬¼´Ê¹µ±Ç°ÇëÇóÈÔȻʹÓÃHTTP/1.1¡£Ê¹²»¼æÈÝЭÒéµÄÇ¨ÒÆ±äµÃ¼òµ¥£¬ÕâÖ»ÐèÒª¿Í»§¶ËÈ¥·¢ÆðÒ»¸ö¶¼±»Ö§³ÖµÄЭÒéµÄÇëÇ󣬲¢ÇÒÏò·þÎñÆ÷Ö¸Ã÷×Ô¼ºÏëҪʹÓøüºÃµÄЭÒéÈç¹û¿ÉÐеϰ¡£

UpgradeÍ·ÓòÖ»ÄÜÓ¦ÓÃÓÚÇл»Ó¦ÓóÌÐò²ã£¨application –layer£©Ð­Ò飬ӦÓóÌÐò²ãЭÒéÔÚ´«Êä²ã£¨transport-layer£©Á¬½ÓÖ®ÉÏ¡£UpgradeÍ·Óò²¢²»Òâζ×ÅЭÒéÒ»¶¨Òª¸Ä±ä£»·þÎñÆ÷¿ÉÒÔ½ÓÊܲ¢ÇÒ¿ÉÒÔÑ¡Ôñ¡£ÔÚЭÒé¸Ä±äºóÓ¦ÓóÌÐò²ã£¨apllication-layer£©Í¨ÐŵÄÄÜÁ¦ºÍ±¾ÖÊ£¬ÍêÈ«ÒÀÀµÓÚÐÂЭÒéµÄÑ¡Ôñ£¬¾¡¹ÜÔڸıäЭÒéºóµÄµÚÒ»´Î¶¯×÷±ØÐëÊǶԳõʼHTTPÇëÇ󣨰üº¬UpgradeÍ·Óò£©µÄÏìÓ¦¡£

UpgradeÍ·ÓòÖ»ÄÜÓ¦ÓÃÓÚÁ¢¼´Á¬½Ó£¨immediate connection£©¡£Òò´Ë£¬upgrade¹Ø¼ü×Ö±ØÐë±»ÌṩÔÚConnectionÍ·ÓòÀ¼û14.10½Ú£©£¬Ö»ÒªUpgradeÍ·Óò³ÊÏÖÔÚHTTP/1.1ÏûÏ¢Àï¡£

UpgradeÍ·Óò²»Äܱ»ÓÃÀ´Ö¸¶¨Çл»µ½Ò»¸ö²»Í¬Á¬½ÓµÄЭÒ顣ΪÕâ¸öÄ¿µÄ£¬Ê¹ÓÃ301£¬302£¬303ÖØ¶¨ÏòÏìÓ¦¸üºÏÊÊ¡£

Õâ¸ö¹æ·¶¶¨ÒåÁ˱¾Ð­ÒéµÄÃû×ÖΪ“HTTP”£¬ËüÔÚ3.1½ÚµÄHTTP°æ±¾¹æÔòÖж¨ÒåµÄ³¬Îı¾´«ÊäЭÒé¼Ò×åÖб»Ê¹Óá£ÈκÎÒ»¸ö±ê¼Ç¶¼¿É±»ÓÃÀ´×öЭÒéÃû×Ö£¬È»¶ø£¬Ö»Óе±¿Í»§¶ËºÍ·þÎñÆ÷ÓÃÔÚͬһЭÒéÀïʹÓôËÃû×Ö²ÅÓÐÓá£

14.43 User-Agent
User-AgentÇëÇóÍ·Óò°üº¬¹ØÓÚ·¢ÆðÇëÇóµÄÓû§´úÀíµÄÐÅÏ¢¡£ÕâÊÇΪÁËͳ¼Æ£¬¸ú×ÙЭÒéÎ¥·´µÄÇé¿ö£¬ºÍΪÁËʶ±ðÓû§´úÀí´Ó¶øÎªÌض¨Óû§´úÀí×Ô¶¯¶¨ÖÆÏìÓ¦¡£Óû§´úÀíÓ¦¸Ã°üº¬User-AgentÍ·ÓòÔÚÇëÇóÖС£´ËÍ·Óò°üº¬¶à¸öʶ±ð´úÀíºÍ×Ó²úÆ·µÄ²úÆ·±ê¼Ç£¨¼û3.8½Ú£©ºÍ½âÊÍ¡£Í¨³££¬²úÆ·±ê¼Ç°´ÖØÒª³Ì¶ÈµÄ˳ÐòÅÅÁдӶøÈ¥Ö¸¶¨Ó¦ÓóÌÐò¡£

      User-Agent     = "User-Agent" ":" 1*£¨ product | comment £©

Àý×Ó:

       User-Agent: CERN-LineMode/2.15 libwww/2.17b3

14.44 Vary
VaryÍ·ÓòÖµÖ¸¶¨ÁËһЩÇëÇóÍ·Óò£¬ÕâЩÇëÇóÍ·ÓòÓÃÀ´¾ö¶¨µ±»º´æÖдæÔÚÒ»¸öÏìÓ¦ÊDZ£ÏÊʱ»º´æÊÇ·ñ±»ÔÊÐíÈ¥ÀûÓôËÏìӦȥ»Ø¸´ºóÐøÇëÇó¶ø²»ÐèÒªÖØÑéÖ¤£¨revalidation£©¡£¶ÔÓÚÒ»¸ö²»Äܱ»»º´æ»ò³Â¾ÉµÄÏìÓ¦£¬VaryÍ·ÓòÖµÓÃÓÚ¸æËßÓû§´úÀíÑ¡Ôñ±íÏÖÐÎʽ£¨reprentation£©µÄ±ê×¼¡£Ò»¸öVaryÍ·ÓòÖµÊÇ“*”Òâζ×Å»º´æ²»ÄÜ´ÓºóÐøÇëÇóµÄÇëÇóÍ·ÓòÀ´¾ö¶¨ºÏÊʱíÏÖÐÎʽµÄÏìÓ¦¡£¼û13.6½Ú¹ØÓÚ»º´æÈçºÎÀûÓÃVaryÍ·Óò¡£

   Vary = "Vary" ":" £¨ "*" | 1#field-name £©

Ò»¸öHTTP/1.1µÄ·þÎñÆ÷Ó¦¸Ã°üº¬Ò»¸öVaryÍ·ÓòÓÚÈκοɻº´æµÄÊÜÏÞÓÚ·þÎñÆ÷Çý¶¯Ð­É̵ÄÏìÓ¦Àï¡£ÕâÑù×öÊÇÔÊÐí»º´æºÏÊʵؽâÎö¹ØÓÚÄǸö×ÊÔ´µÄ½«À´ÇëÇ󣬲¢Í¨ÖªÓû§´úÀíÄǸö×ÊÔ´µ¼ÏòµØÖ·µÄ³öÏÖ¡£Ò»¸ö·þÎñÆ÷¿ÉÄܰüº¬Ò»¸öVaryÍ·ÓòÓÚÒ»¸ö²»¿É»º´æµÄÊÜÏÞÓÚ·þÎñÆ÷Çý¶¯Ð­É̵ÄÏìÓ¦ÀÒòΪÕâÑù×ö¿ÉÄÜΪÓû§´úÀíÌṩÓÐÓõIJ¢ÇÒÏìÓ¦¾Ý´Ë¶ø±ä»¯µÄά¶ÈÐÅÏ¢¡£

Ò»¸öVaryÍ·ÓòÖµÓÉÓòÃû£¨filed-name£©×é³É£¬ÏìÓ¦µÄ±íÏÖÐÎʽÊÇ»ùÓÚVaryÍ·ÓòÀïÁоٵÄÇëÇóÍ·ÓòÀ´Ñ¡ÔñµÄ¡£Ò»¸ö»º´æ¿ÉÄÜ»á¼ÙÉèΪ½«À´ÇëÇó½øÐÐÏàͬµÄÑ¡Ôñ£¬Èç¹ûVaryÍ·ÓòÀý¾ÙÁËÏàͬµÄÓòÃû£¬µ«±ØÐëÊÇ´ËÏìÓ¦ÔÚ´ËÆÚ¼äÊDZ£Ïʵġ£

VaryÍ·ÓòÀïµÄÓòÃû²¢²»ÊǾÖÏÞÓÚ±¾¹æ·¶ÀﶨÒåµÄ±ê×¼ÇëÇóÍ·Óò¡£ÓòÃûÊÇ´óСд²»Ãô¸ÐµÄ¡£

VaryÓòֵΪ”*”Òâζ×Ų»ÊÜÏÞÓÚÇëÇóÍ·ÓòµÄ·ÇÌØ¶¨²ÎÊýÔÚÑ¡ÔñÏìÓ¦±íÏÖÐÎʽÖÐÆð×÷Óà ¡£”*”Öµ²»Äܱ»´úÀí·þÎñÆ÷²úÉú£»Ëü¿ÉÄÜÖ»Äܱ»Ô´·þÎñÆ÷²úÉú¡£

14.45 Via
Via³£ÓÃÍ·Óò±ØÐë±»Íø¹ØºÍ´úÀíʹÓã¬ÓÃÀ´Ö¸Ã÷Óû§´úÀíºÍ·þÎñÆ÷Ö®¼ä¹ØÓÚÇëÇóµÄÖмäЭÒéºÍ½ÓÊÕÕߣ¬ºÍÔ´·þÎñÆ÷ºÍ¿Í»§¶ËÖ®¼ä¹ØÓÚÏìÓ¦µÄÖмäЭÒéºÍ½ÓÊÕÕß¡£ËüºÍRFC822[9]ÀïµÄ“Received”Í·ÓòÏàËÆ£¬²¢ÇÒËüÓÃÓÚ¸ú×ÙÏûÏ¢µÄת·¢£¬±ÜÃâÇëÇóÑ­»·£¬ºÍÖ¸¶¨ÑØ×ÅÇëÇó/ÏìÓ¦Á´µÄËùÓз¢ËÍÕßµÄЭÒéÄÜÁ¦¡£

      Via = "Via" ":" 1#£¨ received-protocol received-by [ comment ] £©

      received-protocol = [ protocol-name "/" ] protocol-version

      protocol-name     = token

      protocol-version = token

      received-by       = £¨ host [ ":" port ] £© | pseudonym

      pseudonym         = token

received-protocolÖ¸³öÑØ×ÅÇëÇó/ÏìÓ¦Á´Ã¿Ò»¶ÎµÄ·þÎñÆ÷»ò¿Í»§¶ËËù½ÓÊÕÏûÏ¢µÄЭÒé°æ±¾¡£protocol-version±»×·¼ÓÓÚViaÍ·ÓòÖµºóÃæ£¬µ±ÏûÏ¢±»×ª·¢Ê±¡£

ֻҪЭÒéÊÇHTTP£¬ÄÇôprotocol-nameÊÇ¿ÉÓпÉÎ޵ġ£received-byÍ·Óòͨ³£ÊǽÓÊÕµÄת·¢·þÎñÆ÷µÄhost£¨Ö÷»ú£©ºÍ¿ÉÑ¡µÄport£¨¶Ë¿Ú£©ºÅ£¬»ò½ÓÊÕµÄת·¢¿Í»§¶ËµÄhost£¨Ö÷»ú£©ºÍ¿ÉÑ¡µÄport£¨¶Ë¿Ú£©ºÅ¡£È»¶ø£¬Èç¹ûÕæÊµhost£¨Ö÷»ú£©±»¿´×÷ÊÇÐÅÏ¢Ãô¸ÐµÄ£¬ÄÇô´ËÖ÷»ú¿ÉÄܻᱻ±ðÃû´úÌæ¡£Èç¹ûport£¨¶Ë¿ÚºÅ£©Ã»Óб»¸ø¶¨£¬ÄÇôËü¿ÉÄܱ»¼ÙÉèΪreceived-protocolµÄȱʡport£¨¶Ë¿Ú£©ºÅ¡£

ViaÍ·ÓòÀïÈç¹ûÓжà¸öÓòÖµ£¬Ôòÿ¸öÖµ·Ö±ð´ú±íÒ»¸öÒѾ­×ª·¢ÏûÏ¢µÄ´úÀí»òÍø¹Ø¡£Ã¿Ò»¸ö½ÓÊÕÕß±ØÐë°ÑËüµÄÐÅÏ¢×·¼Óµ½×îºó£¬ËùÒÔ×îºóµÄ½á¹ûÊǰ´ÕÕת·¢Ó¦ÓóÌÐòµÄ˳ÐòÀ´µÄ¡£

comment£¨×¢ÊÍ£©¿ÉÄܱ»ÓÃÓÚViaÍ·ÓòÊÇΪÁËÖ¸¶¨½ÓÊÕÕß´úÀí»òÍø¹ØµÄÈí¼þ£¬Õâ¸öºÃ±ÈUser-AgentºÍServerÍ·Óò¡£È»¶ø£¬ViaÍ·ÓòÀïËùÓеÄcommentÊÇ¿ÉÑ¡µÄ£¨Òë×¢£º¿ÉÓпÉÎ޵ģ©£¬²¢ÇÒ¿ÉÒÔ±»½ÓÊÕÕßÔÚת·¢ÏûÏ¢Ö®Ç°ÒÆÈ¥¡£

ÀýÈ磬ÓÐÒ»¸öÇëÇóÏûÏ¢À´×ÔÓÚÒ»¸öHTTP/1.0Óû§´úÀí£¬±»·¢Ë͵½´úºÅΪ“fred”µÄÄÚ²¿´úÀí£¬´ËÄÚ²¿´úÀíÀûÓÃHTTP/1.1ЭÒéת·¢´ËÇëÇó¸øÒ»¸öÕ¾µãΪnowhere.comµÄ¹«¹²´úÀí£¬¶ø´Ë¹«¹²´úÀíΪÁËÍê³É´ËÇëÇóͨ¹ý°ÑËüת·¢µ½Õ¾µãΪwww.ics.uci,eduµÄÔ´·þÎñÆ÷¡£±»www.ics.uci.eduÕ¾µã½ÓÊÕºóµÄÇëÇóÕâʱ¿ÉÄÜÓÐÏÂÃæµÄViaÍ·Óò£º

       Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)

±»ÓÃ×÷ͨÏòÍøÂç·À»ðǽµÄÈë¿ÚµÄ´úÀíºÍÍø¹ØÔÚȱʡÇé¿öϲ»Ó¦¸Ãת·¢host£¨Ö÷»ú£©µÄÃû×ֺͶ˿ڵ½·À»ðÇ½ÇøÓòÀï¡£Èç¹ûÕâЩÐÅÏ¢ÏÔʾµØÖ¸¶¨Òª±»´«ËÍ£¬ÄÇô¾ÍÓ¦¸Ã±»´«ËÍ¡£Èç¹û´ËÐÅÏ¢ÏÔʾµØÖ¸¶¨²»Äܱ»´«ËÍ£¬ÄÇôÈκδ©¹ý·À»ðǽ¶ø±»½ÓÊÕµÄhost£¨Ö÷»ú£©Ó¦¸ÃÓÃÒ»¸öºÏÊʵıðÃûÌæ»»¡£

ΪÁËÒþ²Ø×éÖ¯½á¹¹µÄÄÚ²¿½á¹¹ÐèÒª£¬Ò»¸ö´úÀí£¨proxy£©¿ÉÄÜ»áÔÚÒ»¸öViaÍ·ÓòÖаÑÏàͬreceived-protocalÖµµÄÏîºÏ³ÉÒ»¸öÏî¡£ÀýÈ磬

      Via: 1.0 ricky, 1.1 ethel, 1.1 fred, 1.0 lucy

½«±»ÕÛµþ³É

       Via: 1.0 ricky, 1.1 mertz, 1.0 lucy

Ó¦ÓóÌÐò²»Ó¦¸ÃºÏ²¢¶à¸öÏ³ý·ÇËûÃǶ¼ÔÚÏàͬ×éÖ¯µÄ¿ØÖÆÏ²¢ÇÒhost£¨Ö÷»ú£©ÒѾ­±»±ðÃû´úÌæÁË¡£Ó¦ÓóÌÐò²»Äܺϲ¢²»Í¬received-protocaolÖµµÄÏî¡£

14.46 Warning
Warning³£ÓÃÍ·Óò±»ÓÃÓÚЯ´ø¶îÍâ¹ØÓÚÏûÏ¢µÄ״̬»ò±ä»»µÄÐÅÏ¢¶øÕâЩÐÅÏ¢ÊDz»ÄÜÔÚÏûÏ¢Àï·´Ó¦³öÀ´µÄ¡£ÕâЩÐÅϢͨ³£±»ÓÃÓÚÈ¥¾¯¸æÀ´×ÔÓÚ»º´æ²Ù×÷»òÀ´×ÔÓÚÓ¦ÓÃÓÚÏûϢʵÌåÖ÷Ìåת»»µÄ¹ØÓÚÓïÒå͸Ã÷ÐÔ£¨semantic transparency£©µÄȱÉÙ¡£

WarningÍ·Óò±»ÓÃÓÚÏìÓ¦ÀÕâÀïÓÐÈçÏÂÓï·¨£º

       Warning    = "Warning" ":" 1#warning-value

       warning-value = warn-code SP warn-agent SP warn-text

                                             [SP warn-date]

       warn-code = 3DIGIT

       warn-agent = £¨ host [ ":" port ] £© | pseudonym

                       ; the name or pseudonym of the server adding

                       ; the Warning header, for use in debugging

       warn-text = quoted-string

       warn-date = <"> HTTP-date <">

Ò»¸öÏìÓ¦¿ÉÄÜЯ´ø¶à¸öWarningÍ·Óò¡£

warn-text±ØÐëʹÓöÔÓÚ½ÓÊÕÏìÓ¦µÄÓû§À´Ëµ¾¡¿ÉÄÜÄÜÀí½âµÄ×ÔÈ»ÓïÑÔºÍ×Ö·û¼¯¡£ÕÒµ½Óû§×ÔÄÜÀí½âµÄ×ÔÈ»ÓïÑÔºÍ×Ö·û¼¯£¬±ØÐë»ùÓÚÈκοÉÄܵÄ֪ʶ£¬È绺´æ»òÓû§µÄλÖã¬ÇëÇóÀïµÄAccept-LanguageÍ·Óò£¬ÏìÓ¦ÀïµÄContent-LanguageÍ·Óò£¬µÈµÈ¡£È±Ê¡ÓïÑÔÊÇÓ¢Óȱʡ×Ö·û¼¯ÊÇISO-8859-1¡£

Èç¹û×Ö·û¼¯²»ÊÇISO-8859-1£¬ÄÇôËü±ØÐëÀûÓÃRFC2047ÀïÃèÊöµÄÀ´ÔÚwarn-textÀï½øÐбàÂë¡£

WarningÍ·ÓòÄܱ»Ó¦ÓÃÓÚÈκÎÏûÏ¢£¬È»¶ø£¬Ò»Ð©warn-codesÊÇÌØ¶¨ÓÚ»º´æµÄ£¬²¢ÇÒÄܱ»Ó¦ÓÃÓÚÏìÓ¦ÏûÏ¢¡£ÐµÄWarningÍ·ÓòÓ¦¸Ã¼ÓÔÚÈκÎÒÑ´æÔÚWarningÍ·ÓòµÄºóÃæ¡£»º´æ²»ÄÜɾ³ýÈκÎËü½ÓÊÕµÄÏûÏ¢ÀïµÄWarningÍ·Óò¡£È»¶ø£¬Èç¹ûÒ»¸ö»º´æÒªÈ¥³É¹¦ÑéÖ¤ÁËÒ»¸ö»º´æÏÄÇôËüÓ¦¸ÃÒÆ³ýÈκθ½¼ÓÔÚÄǸö»º´æÏîÒÔǰµÄWarningÍ·Óò³ýÁËÌØ¶¨ÓÚ´ËWarning codeµÄWarningÍ·Óò¡£ËüÈ»ºó±ØÐëÌí¼ÓÈκνÓÊÕµÄWarningÍ·ÓòÓÚÑéÖ¤ÏìÓ¦Àï¡£»»¾ä»°Ëµ£¬¸½¼ÓµÄ±ØÐëÊÇ×î½üµÄÏà¹ØÓÚÏìÓ¦µÄWarningÍ·Óò¡£

µ±¶à¸öWarningÍ·Óò±»¸½¼ÓÓÚÒ»¸öÏìÓ¦ÀÄÇôÓû§´úÀíÓ¦¸Ã֪ͨÓû§¾¡¿ÉÄܶàµÄ¾¯¸æ£¬²¢ÇÒÒÔËüÃdzÊÏÖÔÚÏìÓ¦ÀïµÄ˳Ðò¡£Èç¹ûÓû§´úÀí²»ÄÜ֪ͨÓû§ËùÓеľ¯¸æ£¬ÄÇôÓû§´úÀíÓ¦¸Ã°´ÕÕÏÂÃæµÄ¹æÔò£º

-          Ç°ÃæµÄÏìÓ¦ÀïµÄ¾¯¸æÓÅÓÚºóÃæÏìÓ¦µÄ¾¯¸æ

-          Óû§Æ«°®µÄ×Ö·û¼¯µÄ¾¯¸æÓÅÓÚÆäËü×Ö·û¼¯µÄ¾¯¸æ£¬µ«Õâ³ýÁËwarn-codesºÍwarn-agentsÒ»ÖµÄÇé¿ö¡£

²úÉú¶à¸öWarningÍ·ÓòµÄϵͳӦ¸Ãʱ¿Ì¼ÇסÀûÓÃÓû§´úÀíÐÐΪÀ´°²Åž¯¸æ¡£

¹ØÓÚ¾¯¸æµÄ»º´æÐÐΪµÄÒªÇóÔÚ13.1.2ÀïÃèÊö¡£

ÏÂÃæÊǵ±Ç°¶¨ÒåµÄwarn-codes£¬Ã¿Ò»¸öwarn-code¶¼ÓÐÒ»¸ö½¨ÒéÐÔµÄÒÔÓ¢Óï±íʾµÄwarn-text£¬ºÍËüµÄÒâ˼µÄÃèÊö¡£

110 Response is stale

 ÎÞÂÛºÎʱµ±·µ»ØÏìÓ¦Êdz¾ɵÄʱºò£¬±ØÐë±»°üº¬¡£

111 Revalidation failed

   Èç¹ûÒ»¸ö»º´æÒòΪ³¢ÊÔÈ¥ÖØÑéÖ¤ÏìӦʧ°Ü¶ø·µ»ØÒ»¸ö³Â¾ÉµÄÏìÓ¦£¨ÓÉÓÚ²»Äܵ½´ï·þÎñÆ÷£©£¬±ØÐë±»°üº¬¡£

112 Disconnected operation

   Èç¹û»º´æÔÚÒ»¶Îʱ¼ä±»ÓÐÒâµØ¶Ï¿ªÁ¬½Ó£¬Ó¦¸Ã±»°üº¬¡£

113 Heuristic expiration

   Èç¹û»º´æÌ½Ë÷ÐÔµØÑ¡ÔñÁËÒ»¸ö±£ÏÊÊÙÃü´óÓÚ24Сʱ²¢ÇÒÏìÓ¦µÄÄêÁä´óÓÚ24Сʱʱ£¬±ØÐë±»°üº¬¡£

199 Miscellaneous warning

   ¾¯¸æÎı¾¿ÉÄܰüº¬ÈÎÒâÐÅÏ¢³ÊÏÖ¸øÓû§¡£³ýÁ˳ÊÏÖ¸øÓû§¾¯¸æ£¬½ÓÊÕ¾¯¸æµÄϵͳ²»ÄܲÉÈ¡ÈκÎ×Ô¶¯ÐÐΪ¡£

214 Transformation applied

 Èç¹ûÒ»¸öÖм仺´æ»ò´úÀí²ÉÓÃÈκζÔÏìÓ¦µÄÄÚÈݱàÂ루content-coding£©£¨ÔÚContent-EncodingÍ·ÓòÀïÖ¸¶¨£©»òýÌåÀàÐÍ£¨media-type£©£¨ÔÚContent-TypeÍ·ÓòÀïÖ¸¶¨£©µÄ¸Ä±ä±ä£¬»òÏìÓ¦µÄʵÌåÖ÷Ì壨entity-body£©µÄ¸Ã±ä£¬ÄÇô´ËÏìÓ¦Âë±ØÐë±»Öм仺´æ»ò´úÀíÌí¼Ó£¬³ý·Ç´Ë¾¯¸æÂ루warning code£©ÒѾ­ÔÚÏìÓ¦Àï³öÏÖ¡£

299 Miscellaneous persistent warning

 ¾¯¸æÎı¾Ó¦¸Ã°üº¬ÈÎÒâ³ÊÏÖ¸øÓû§µÄÈÎÒâÐÅÏ¢¡£½ÓÊÕ¾¯¸æµÄϵͳ²»ÄܲÉÈ¡ÈκÎ×Ô¶¯ÐÐΪ¡£

Èç¹ûÒ»¸öʵÏÖÔÚÒ»¸öÏûÏ¢Àï·¢ËͶà¸ö°æ±¾ÊÇHTTP/1.0»ò¸üÔçµÄHTTPЭÒé°æ±¾µÄWarningÍ·Óò£¬ÄÇô·¢ËÍÕß±ØÐë°üº¬Ò»¸öºÍÏìÓ¦ÈÕÆÚ£¨date£©ÏàµÈµÄwarn-dateµ½Ã¿Ò»¸öWarningÍ·ÓòÖµÖС£

Èç¹ûÒ»¸öʵÏÖÊÕµ½Ò»Ìõwarning-valueÀï°üº¬Ò»¸öwarn-dateµÄÏûÏ¢£¬²¢ÇÒÄǸöwarn-date²»Í¬ÓÚÏìÓ¦ÀïµÄDateÖµ£¬ÄÇôwarning-value±ØÐëÔÚ±£´æ£¬×ª·¢£¬»òÀûÓÃÏûϢ֮ǰ´ÓÏûÏ¢Àïɾ³ý¡££¨Õâ»Ø·ÀÖ¹±¾µØ»º´æÈ¥»º´æWarningÍ·ÓòµÄ¶ñ¹û¡££©Èç¹ûËùÓÐwarning-valueÒòΪÕâ¸öÔ­Òò¶ø±»É¾³ý£¬WarningÍ·Óò±ØÐëÒ²Òª±»É¾³ý¡£

14.47 WWW-Authenticate
WWW-AuthenticateÏìӦͷÓò±ØÐë°üº¬ÔÚ401£¨Ã»Óб»ÊÚȨ£©ÏìÓ¦ÏûÏ¢ÖС£´ËÓòÖµÖÁÉÙÓ¦¸Ã°üº¬Ò»¸öcallenge£¬´ËcallengeÖ¸Ã÷ÊÚȨ·½°¸£¨Òë×¢£ºÓеĵط½·­Òë³Éģʽ£©ºÍÊÊÓÃÓÚÇëÇóURIµÄ²ÎÊý¡£

WWW-Authenticate =“WWW-Authenticate” “:” 1#challenge

HTTP·ÃÎÊÊÚȨ¹ý³ÌÔÚ“HTTP Authentication: Basic and Digest Access Authentication”[43]ÀïÃèÊö¡£Óû§´úÀí±»½¨ÒéÌØ±ðСÐÄÈ¥½âÎöWWW-AuthenticateÍ·ÓòÖµ£¬µ±´ËÍ·ÓòÖµ°üº¬¶à¸öchallenge£¬»òÈç¹û¶à¸öWWW-AuthenticateÍ·Óò±»ÌṩÇÒchallengeµÄÄÚÈÝÄܰüº¬¶ººÅ·Ö¸ôµÄÊÚȨ²ÎÊýµÄʱºò¡£

15£®°²È«¿¼ÂÇ £¨Security Consideration£©
ÕâÒ»²¿·ÖÊÇÓÃÀ´ÌáÐѳÌÐò¿ª·¢ÈËÔ±£¬ÐÅÏ¢ÌṩÕߣ¬ºÍÓû§¹ØÓÚHTTP/1.1°²È«·½ÃæµÄÏÞÖÆ¡£ÌÖÂÛ²¢²»°üº¬¶ÔÅû¶ÎÊÌâµÄÃ÷È·µÄ½â¾ö°ì·¨£¬È»¶ø£¬È·¶Ô¼õÉÙ°²È«·çÏÕÌṩÁËһЩ½¨Òé¡£

15.1 ¸öÈËÐÅÏ¢ £¨Personal Information£©
HTTPµÄ¿Í»§¶Ë¾­³£Òª¶Ô´óÁ¿µÄ¸öÈËÐÅÏ¢±£ÃÜ£¨ÀýÈçÓû§µÄÃû×Ö£¬Óò£¬ÓʼþµØÖ·£¬¿ÚÁÃܳ׵ȡ££©£¬²¢ÇÒÓ¦µ±·Ç³£Ð¡ÐĵطÀÖ¹ÕâЩÐÅÏ¢ÎÞÒâʶµØÍ¨¹ýHTTPЭÒéй¶µ½ÆäËûµÄ×ÊÔ´¡£ÎÒÃǷdz£Ç¿Áҵؽ¨ÒéÓ¦¸Ã¸øÓû§Ìṩһ¸ö·½±ãµÄ½çÃæÀ´¿ØÖÆÕâÖÖÐÅÏ¢µÄ´«²¥£¬²¢ÇÒÉè¼ÆÕߺÍʵÏÖÕßÔÚÕâ·½ÃæÓ¦¸ÃÌØ±ð×¢Òâ¡£ÀúÊ·¸æËßÎÒÃÇÔÚÕâ·½ÃæµÄ´íÎó¾­³£ÒýÆðÑÏÖØµÄ°²È«ºÍ/»òÕßÒþ˽ÎÊÌ⣬²¢µ¼Ö¶ÔÉè¼Æ»òʵÏÖÕߵĹ«Ë¾²úÉú·Ç³£²»ÀûµÄÓ°Ïì¡£

15.1.1·þÎñÆ÷ÈÕÖ¾ÐÅÏ¢µÄÀÄÓà £¨Abuse of Server Log Information£©
·þÎñÆ÷ÊÇÓÃÀ´±£´æÓÃÀ´Ö¸¶¨Óû§¶ÁÄ£ÐÍ»ò¸ÐÐËȤÖ÷ÌâµÄÇëÇóµÄ¡£ÕâЩÐÅϢͨ³£ÏÔÈ»ÊÇÐè±£Ãܵ쬲¢ÇÒËüµÄʹÓÃÔÚijЩ¹ú¼Ò±»·¨Âɱ£»¤¡£ÀûÓÃHTTPЭÒéÌṩÊý¾ÝµÄÈËÃDZØÐë±£Ö¤ÔÚÕâЩÊý¾Ý±»Ðí¿ÉµÄÇé¿öÏ·ַ¢¡£

15.1.2Ãô¸ÐÐÅÏ¢µÄ´«Êä £¨Transfer of Sensitive Inforamtion£©
¾ÍÏñÈκÎÊý¾Ý´«ÊäЭÒéÒ»Ñù£¬HTTP²»Äܵ÷ÕûÊý¾Ý´«ÊäµÄÄÚÈÝ£¬Ò²Ã»ÓÐÈκξ­Ñé·½·¨È¥¾ö¶¨¸ø¶¨ÇëÇó±³¾°ÀïÌØ¶¨ÐÅÏ¢µÄÃô¸ÐÐÔ¡£Òò´Ë£¬Ó¦ÓóÌÐòÓ¦¸Ã¾¡¿ÉÄÜΪ´ËÐÅÏ¢ÌṩÕßÌṩ¶Ô´ËÐÅÏ¢µÄ¿ØÖÆ¡£±³¾°ÀïÓÐËĸöÍ·ÓòÐèÒªÌá³öÀ´£¬ÕâËĸöÍ·ÓòÊÇ£ºServer£¬Via£¬Referer ºÍFrom¡£

½Ò¶·þÎñÆ÷ÌØ¶¨Èí¼þ°æ±¾¿ÉÄÜ»áʹ·þÎñÆ÷µÄ»úÆ÷¸üÈÝÒ×Êܵ½Í¨¹ýÈí¼þ°²È«Â©¶´À´½øÐй¥»÷¡£ÊµÏÖÕßÓ¦¸ÃʹServerÍ·Óò³ÉΪ¿ÉÉèÖõÄÑ¡Ïî¡£

ÓÃ×÷´©¹ýÍøÂç·À»ðǽÈë¿ÚµÄ´úÀíÓ¦¸ÃÌØ±ðСÐĹØÓÚÖ¸¶¨·À»ðǽºóµÄÖ÷»ú£¨host£©Í·ÓòÐÅÏ¢µÄ´«Êä¡£ÌØ±ðµØ£¬´úÀíÓ¦¸ÃÒÆ³ý»òÓÃɱ¶¾ºóµÄ°æ±¾Ìæ»»ÈκβúÉúÓÚ·À»ðǽ֮ºóµÄViaÍ·Óò¡£

RefererÍ·ÓòÔÊÐíѧϰµÄ¶ÁÄ£Ðͺͷ´ÏòÁ´½ÓÇ£Òý¡£ËäÈ»Ëü·Ç³£ÓÐÓ㬵«Ò²»á±»ÀÄÓÃÈç¹ûÓû§ÏêÇéûÓдӰüº¬ÔÚRefererÍ·ÓòÀïÐÅÏ¢·ÖÀ뿪À´¡£¼´Ê¹µ±¸öÈËÐÅÏ¢ÒѾ­±»ÒƳýÁË£¬ÄÇôÕâ¸öRefererÍ·ÓòÒ²¿ÉÄÜÖ¸¶¨Ë½ÓеÄÎĵµURI£¬´ËÎĵµ²»ÊʺÏ×÷Ϊ¹²Óеġ£

FromÍ·ÓòÀïµÄÐÅÏ¢¿ÉÄÜ»áºÍÓû§µÄ˽ÓÐÐËȤ»òËûÃÇÕ¾µãµÄ°²È«²ßÂÔÏà³åÍ»£¬Òò´ËÕâЩÐÅÏ¢ÔÚÓû§Ê¹´ËÍ·ÓòÄÚÈÝÎÞЧ¡¢ÓÐЧºÍ¸Ä±äµÄÇé¿öϲ»Äܱ»´«Êä¡£Óû§±ØÐëÄÜÔÚÓû§µÄϲ°®»òÓ¦ÓóÌÐòµÄȱʡÉèÖ÷¶Î§ÄÚÉèÖôËÍ·ÓòµÄÄÚÈÝ¡£

ÎÒÃǽ¨Ò飬¾¡¹Ü²»ÐèÒª£¬¸øÓû§Ìṩһ¸ö·½±ãµÄ´¥·¢Æ÷À´Ê¹·¢ËÍFromºÍRefererÍ·ÓòÐÅÏ¢ÓÐЧ»òʧЧ¡£

User-Agent£¨14.4½Ú£©»òServer£¨14.38½Ú£©Í·ÓòÓÐʱºòÄܱ»ÓÃÀ´È¥È·¶¨Ò»¸öÌØ¶¨µÄ¿Í»§¶Ë»ò·þÎñÆ÷´æÔÚ°²È«Â©¶´¡£²»ÐÒµÄÊÇ£¬Í¬ÑùµÄÐÅÏ¢¾­³£±»ÓÃÓÚÆäËüµÄÓмÛÖµµÄÄ¿µÄÒòΪHTTPÏÖÔÚûÓиüºÃµÄ»úÖÆ¡£

15.1.3 URIÖÐÃô¸ÐÐÅÏ¢µÄ±àÂ루Encoding Sensitive Information in URI’s£©
ÒòΪһ¸öÁ´½ÓµÄÔ´¿ÉÄÜÊÇ˽ÓÐÐÅÏ¢»òÕß¿ÉÄܽÒ¶ÆäËü˽ÓÐÐÅÏ¢×ÊÔ´£¬ËùÒÔÇ¿ÁÒ½¨ÒéÓû§ÄÜÑ¡ÔñÊÇ·ñÐèÒª·¢ËÍRefererÍ·Óò¡£ÀýÈ磬ä¯ÀÀÆ÷¿Í»§¶Ë¿ÉÄÜΪÁË¿ª·Å/ÄäÃû·½Ê½»áÓÐÒ»¸ö´¥·¢¿ª¹Ø£¬´Ë¿ª¹Ø¿ÉÄÜʹRefererÍ·ÓòºÍFromÍ·ÓòÐÅÏ¢µÄ·¢ËÍÓÐЧ/ÎÞЧ¡£

¿Í»§¶Ë²»Ó¦¸Ã°üº¬Ò»¸öRefererÍ·ÓòÔÚÒ»¸ö·Ç°²È«HTTPÇëÇóÀÈç¹û²Î¿¼Ò³ÃæÔÚÒ»¸ö°²È«µÄЭÒéÉÏ´«Êä¡£

ÀûÓÃHTTPЭÒéµÄ·þÎñ×÷Õß²»Ó¦¸ÃÀûÓûùÓÚ´°ÌåGETÌá½»Ãô¸ÐÊý¾Ý£¬ÒòΪÕâ¸öÄÜÒýÆðÊý¾ÝÔÚÇëÇóURIÀï±»±àÂë¡£Ðí¶àÒÑ´æÔڵķþÎñ£¬´úÀí£¬ºÍÓû§´úÀí½«¼Ç¼ÇëÇóURIÓÚijЩ¶ÔµÚÈý·½¿É¼ûµÄµØ·½¡£·þÎñÆ÷ÄÜÀûÓûùÓÚ´°ÌåPOSTÌá½»À´È¡´ú»ùÓÚ´°ÌåGETÌá½»¡£

15.1.4Á¬½Óµ½AcceptÍ·ÓòµÄÒþ˽ÎÊÌâ
AcceptÇëÇóÍ·ÓòÄܽÒ¶Óû§µÄÐÅÏ¢¸øËùÓб»·ÃÎʵķþÎñÆ÷¡£Accept-LanguageÍ·ÓòÄܽÒ¶Óû§µÄ˽ÓÐÐÅÏ¢£¬ÒòΪÄÜÀí½âÌØ¶¨ÓïÑÔµÄÈ˾­³£±»ÈÏΪ¾ÍÊÇij¸öÌØ¶¨ÖÖ×åÀïµÄ³ÉÔ±¡£ÌṩѡÔñÉèÖÃAccept-LanguageÍ·ÓòÄÚÈÝÓÚÿ´ÎÇëÇóÀïµÄÓû§´úÀí±»Ç¿ÁÒ¹ÄÀøÈÃÉèÖùý³Ì°üº¬Ò»¸öÈÃÓû§ÖªµÀÒþ˽¶ªÊ§µÄÏûÏ¢¡£

ÏÞÖÆË½ÓÐÐÅÏ¢µÄ·½·¨¿ÉÄÜÊÇÔÚȱʡÇé¿öÏÂÈÃÓû§´úÀí²»·¢ËÍAccept-LanguageÍ·Óò£¬²¢ÇÒÈÃÓû§´úÀíѯÎÊÓû§ÊÇ·ñ·¢ËÍAccept-LanguageÍ·Óò¸ø·þÎñÆ÷Èç¹ûÓû§´úÀíͨ¹ý²é¿´ÈκÎÓÉ·þÎñÆ÷²úÉúµÄVaryÏìӦͷÓòʱ·¢ÏÖÕâ´Î·¢ËÍÄÜÌá¸ß·þÎñµÄÖÊÁ¿¡£

ÇëÇóÀïµÄÓû§ÅäÖÃÐԵĽÓÊÜÍ·ÓòÈç¹ûÕâЩ½ÓÊÜÍ·Óò£¨accept header fileds£©°üº¬ÖÊÁ¿Öµ£¬ÄÇôËûÃÇÓ¦¸Ã±»·þÎñÆ÷ÓÃ×÷Ïà¶ÔÐÅÀµºÍ³¤¾ÃµÄÓû§±êʶ·û¡£ÕâÑùµÄÓû§±êʶ·û½«»áÔÊÐíÄÚÈÝÌṩÕß½øÐÐclick-trail¸ú×ÙÒÔ¼°ÔÊÐíºÏ×÷ÄÚÈÝÌṩÕ߯¥Åä¿ç·þÎñÆ÷click-trail»òÕßÐγɵ¥¸öÓû§´°ÌåÌá½»¡£×¢Òâ¶ÔÓÚÐí¶à²¢²»ÔÚ´úÀí·þÎñÆ÷ºóÃæµÄÓû§£¬ÔËÐÐÓû§´úÀíµÄÖ÷»úµÄÍøÂçµØÖ·Ò²½«×÷Ϊ³¤¾ÃÓû§µÄ±êʶ·û¡£ÔÚ´úÀí·þÎñÆ÷±»ÓÃ×÷ÔöÇ¿Òþ˽µÄ»·¾³ÀÓû§´úÀíÔÚÌṩ¸øÖÕ¶ËÓû§½ÓÊÜ£¨accept£©Í·ÓòÅäÖÃÑ¡ÏîÉÏÓ¦¸ÃÊDZ£Êصġ£Ìṩ¸ß¶ÈÍ·ÓòÅäÖÃÄÜÁ¦µÄÓû§´úÀíÓ¦¸Ã¾¯¸æÓû§Òþ˽¿ÉÄܵĶªÊ§¡£

15.2 »ùÓÚÎļþºÍ·¾¶Ãû³ÆµÄ¹¥»÷
HTTPµÄÔ´·þÎñÆ÷µÄʵÏÖÓ¦¸ÃСÐĵØÏÞÖÆHTTPÇëÇ󷵻صÄÎĵµ¸øÄÇЩÓɹÜÀíÔ±ÊÚȨµÄÈË¡£Èç¹ûHTTP·þÎñÆ÷Òª°ÑHTTP URIs·­Òë³ÉÎļþϵͳµÄµ÷Óã¬ÄÇô·þÎñÆ÷±ØÐëСÐÄÈ¥¶Ô´ýÌṩ¸øHTTP¿Í»§¶ËµÄÎļþ´«Êä¡£ÀýÈ磬UNIX£¬Î¢ÈíWindows£¬ºÍÆäËû²Ù×÷ϵͳ¶¼ÀûÓÔ..”ȥָʾµ±Ç°µÄ¸¸Ä¿Â¼¡£¶ÔÓÚÕâÒ»¸öϵͳ£¬Èç¹ûHTTP·þÎñÆ÷ÔÊÐí·ÃÎÊÒ»¸ö×ÊÔ´£¬µ«ÕâЩ×ÊԴͨ¹ýHTTP·þÎñÆ÷²»ÄÜ·ÃÎÊ£¬ÄÇôһ¸öHTTP·þÎñÆ÷±ØÐë²»ÔÊÐíÈκÎÕâÑùµÄ¹¹Ôì´æÔÚÓÚÇëÇóURI¡£Í¬ÑùµÄ£¬ÓÃ×÷·þÎñÆ÷ÄÚ²¿ÎļþµÄÒýÓõÄÎļþ£¨Èç·ÃÎÊ¿ØÖÆÎļþ£¬ÅäÖÃÎļþ£¬½Å±¾´úÂ룩±ØÐëÊܵ½±£»¤²»Èò»ºÏÊʵĻñÈ¡£¬ÒòΪËûÃÇ¿ÉÄܰüº¬Ãô¸ÐµÄÐÅÏ¢¡£¾­Ñ鏿ËßÎÒÃÇÒ»¸öÔÚHTTP·þÎñÆ÷ʵÏÖÀïµÄÒ»¸öССµÄ´íÎó»á´øÀ´°²È«·çÏÕ¡£

15.3 HTTP://www.cnpaf.net/class/dns' target='_blank'>DNSÆÛÆ­
ʹÓÃHTTPµÄ¿Í»§¶ËÑÏÖØÒÀÀµÓÚÓòÃû·þÎñ£¬Òò´ËÕâ»áµ¼Ö»ùÓÚIPºÍHTTP://www.cnpaf.net/class/dns' target='_blank'>DNSÃû³ÆµÄ²»¹ØÁªµÄ¹¥»÷¡£¿Í»§¶ËÐèҪСÐĹØ×¢IPµØÖ·/HTTP://www.cnpaf.net/class/dns' target='_blank'>DNSÃû³Æ¹ØÁªµÄ³Ö¾ÃºÏ·¨ÐÔ¡£

ÌØ±ðµØ£¬HTTP¿Í»§¶ËΪÁËÈ·ÈÏIPµØÖ·/HTTP://www.cnpaf.net/class/dns' target='_blank'>DNSÃû³Æ¹ØÁªÐÔ£¬Ó¦¸ÃÒÀÀµÓÚ¿Í»§¶Ë×Ô¼ºµÄµÄÃû³Æ½âÎöÆ÷£¬¶ø²»ÊÇ»º´æÒÔǰÖ÷»ú£¨host£©Ãû³Æ²éÕÒ£¨host name lookups£©½á¹û¡£Ðí¶àƽ̨ÒѾ­Äܱ¾µØµÄÈ¥»º´æÖ÷»úÃû³Æ²éÕÒ£¨host name lookups£©µ±ÔÚºÏÊʵÄʱºò£¬²¢ÇÒËûÃÇÓ¦¸Ã±»ÅäÖóÉÄÜÕâÑù×ö¡£È»¶ø£¬Ö»Óе±±»Ãû³Æ·þÎñÆ÷±¨¸æµÄTTL£¨Time To Live£©ÐÅϢʹ±»»º´æµÄÐÅÏ¢ÈÔÈ»ÓÐÓÃʱ£¬»º´æ²éÕÒ£¨lookups£©²ÅÊǺÏÊʵġ£

Èç¹ûHTTP¿Í»§¶ËΪÁËÌá¸ßÐÔÄÜÈ¥»º´æÖ÷»úÃû³Æ²éÕÒ£¨host name lookups£©µÄ½á¹û£¬ÄÇôËû±ØÐë¹Û²ì±»HTTP://www.cnpaf.net/class/dns' target='_blank'>DNS±¨¸æµÄTTLÐÅÏ¢¡£

Èç¹ûHTTP¿Í»§¶Ë²»ÄÜ¿´µ½ÕâÌõ¹æÔò£¬ÄÇôËûÃǾͻᱻÆÛÆ­µ±ÒÔǰ·ÃÎʵÄIPµØÖ·¸Ä±äʱ¡£ÒòÎªÍøÂçµØÖ·µÄ¸Ä±ä±äµÃºÜƽ³££¬ËùÒÔÕâÖÖÐÎʽµÄ¹¥»÷ÔÚ²»¶ÏÔö¼Ó¡£¿´µ½Õâ¸ö¹æÔòÄܼõÉÙDZÔڵݲȫ¹¥»÷µÄ¿ÉÄÜÐÔ¡£

´ËÒªÇóÕÕÑùÄÜÌṩ¿Í»§¶Ë¸ºÔØÆ½ºâÐÐΪÒòÎªÖØ¸´µÄ·þÎñÆ÷ÄÜÀûÓÃͬһ¸öHTTP://www.cnpaf.net/class/dns' target='_blank'>DNSÃû³Æ£¬´ËÒªÇóÄܽµµÍÓû§ÔÚ·ÃÎÊÀûÓòßÂÔ£¨strategy£©µÄÕ¾µãÖеÄÌåÑéʧ°Ü¡£

15.4 LocationÍ·ÓòºÍÆÛÆ­
Èç¹ûµ¥¸öµÄ·þÎñÆ÷Ö§³Ö»¥²»ÐÅÈεĶà¸ö×éÖ¯£¬ÄÇôËü±ØÐë¼ì²é×ԳƵÄij¸ö×éÖ¯¿ØÖÆÏ²úÉúÏìÓ¦ÀïLocationºÍContent-LocationÍ·ÓòÖµ£¬ÒÔÈ·ÈÏÕâЩ×é֯ûÓÐÆóͼʹËüÃÇûÓÐȨÏÞµÄ×ÊÔ´ÎÞЧ¡£

15.5 Content-DispositionµÄÎÊÌâ
RFC 1806 [35]£¬ÔÚHTTPÖо­³£Ê¹ÓõÄContent-Disposition£¨¼û19.5.1½Ú£©Í·Óò¾ÍÔ´ÓÚ´ËÎĵµ£¬ÓÐÐí¶à·Ç³£ÈÏÕæµÄ°²È«¿¼ÂÇÔÚ´ËÎĵµÀï˵Ã÷¡£Content-Disposition²¢²»ÊÇHTTP±ê×¼°æ±¾ÖеÄÒ»²¿·Ö£¬µ«×Ô´ÓËü±»¹ã·ºÓ¦ÓÃÒÔÀ´£¬ÎÒÃÇÕýÔÚÖ¤Ã÷Ëü¶ÔʹÓÃÕߵļÛÖµºÍ·çÏÕ¡£Ïêϸ×ÊÁϼûRFC 2183 [49]£¨¶ÔRFC 1806µÄÉý¼¶£©¡£

15.6 ÊÚȨ֤ÊéºÍ¿ÕÏпͻ§¶Ë
ÏÖÓеÄHTTP¿Í»§¶ËºÍÓû§´úÀíͨ³£»á²»È·¶¨µØ±£ÁôÊÚȨÐÅÏ¢¡£HTTP/1.1²¢Ã»ÓÐΪ·þÎñÆ÷Ìṩһ¸ö·½·¨È÷þÎñÆ÷È¥Ö¸µ¼¿Í»§¶Ë¶ªÆúÕâЩ»º´æµÄÖ¤Ê飨credentials£©¡£ÕâÊÇÒ»¸öÖØ´óȱÏÝ£¬´ËȱÏÝÐèÒªÀ©Õ¹HTTPЭÒéÀ´½â¾ö¡£ÔÚijЩÇé¿öÏ£¬Ö¤ÊéµÄ»º´æÄܸÉÉæÓ¦ÓóÌÐòµÄ°²È«Ä£ÐÍ£¬´ËÇé¿ö°üº¬µ«²»¾ÖÏÞÓÚ£º

Ø         ÕâÑùµÄ¿Í»§¶Ë¡£´Ë¿Í»§¶ËÒѾ­¿ÕÏÐʱ¼ä³¬³¤²¢ÇÒ·þÎñÆ÷¿ÉÄÜÏ£ÍûÔÙ´ÎÈÿͻ§¶Ë³öʾ֤Êé¡£

Ø         ÕâÑùµÄÓ¦ÓóÌÐò¡£´ËÓ¦ÓóÌÐò°üÀ¨ÁËÒ»¸ö»á»°ÖжÏÖ¸ÁÀýÈçÔÚÒ»Ò³ÉÏÓÐ"logout"»òÕß"commit"µÄ°´Å¥£©£¬ÒÀ¾Ý´ËÖ¸ÁîÓ¦ÓóÌÐòµÄ·þÎñÆ÷¶Ë“ÖªµÀ”ûÓиü¶àµÄÀíÓÉΪ¿Í»§¶Ë±£ÁôÖ¤Êé¡£

ÕâÊÇ×÷Ϊµ±Ç°µ¥¶ÀÑо¿µÄ¡£Óкܶà½â¾öÕâ¸öÎÊÌâµÄÉçÇø£¬²¢ÇÒÎÒÃǹÄÀøÔÚÆÁÄ»±£»¤³ÌÐò£¬¿ÕÏг¬Ê±£¬ºÍÆäËûÄܼõÇᰲȫÎÊÌâµÄ·½·¨ÀïÀûÓÃÃÜÂë±£»¤¡£ÌØ±ðµØ£¬ÄÜ»º´æÖ¤ÊéµÄÓû§´úÀí±»¹ÄÀøÈ¥Ìṩһ¸öÈÝÒ׵طÃÎÊ¿ØÖÆ»úÖÆÈÃÔÚÓû§µÄ¿ØÖÆÏÂÈ¥¶ªÆú»º´æµÄÖ¤Êé¡£

15.7 ´úÀíºÍ»º´æ £¨Proxies and Caching£©
±¾ÖÊÉÏ˵£¬HTTP´úÀíÊÇÖмäÈË£¨men-in-the-middle£©£¬²¢ÇÒ´æÔÚÖмäÈ˹¥»÷£¨man-in-the-middle attacks£©Î£ÏÕ¡£´úÀíÔËÐÐÔÚÆäÉÏϵͳµÄÕÛÖÐÄܵ¼ÖÂÑÏÖØµÄ°²È«ºÍÒþ˽ÎÊÌâ¡£´úÀíÓµÓжÔÏà¹Ø°²È«ÐÅÏ¢¡¢Óû§ºÍ×éÖ¯µÄ¸öÈËÐÅÏ¢¡¢ºÍÊôÓÚÓû§ºÍÄÚÈÝÌṩÕßµÄרÓÐÐÅÏ¢µÄ·ÃÎÊȨÏÞ¡£Ò»¸öÍ×ЭµÄ´úÀí£¬»òÒ»¸öûÓп¼Âǰ²È«ÐÔºÍÒþ˽ÐԵĴúÀí¿ÉÄܻᱻÓÃ×ö½øÐй¥»÷µÄ´úÀí¡£

´úÀí²Ù×÷ÕßÓ¦¸Ã±£»¤´úÀíÔËÐÐÆäÉϵÄϵͳ£¬ÕýÈçËûÃDZ£»¤Èκΰüº¬»ò´«ÊäÃô¸ÐÐÅÏ¢µÄϵͳһÑù¡£ÌرðµÄ£¬´úÀíÉÏÊÕ¼¯µÄÈÕÖ¾ÐÅÏ¢¾­³£°üº¬½Ï¸ßµÄ¸öÈËÃô¸ÐÐÅÏ¢£¬ºÍ/»ò¹ØÓÚ×éÖ¯µÄÐÅÏ¢¡£ÈÕÖ¾ÐÅÏ¢Ó¦¸Ã±»Ð¡Ðĵı£»¤£¬²¢ÇÒÒªºÏÊʵؿª·¢ÀûÓᣣ¨¼û15.1.1£©½Ú¡£

´úÀíµÄÉè¼ÆÕßÓ¦µ±¿¼Âǵ½Éè¼ÆºÍ±àÂëÅж¨ËùÉæ¼°µ½µÄÒþ˽ºÍ°²È«ÎÊÌ⣬ÒÔ¼°ËûÃÇÌṩ¸ø´úÀí²Ù×÷ÈËÔ±ÅäÖÃÑ¡ÏÓÈÆäÊÇȱʡÅäÖã©ËùÇ£Éæµ½µÄÒþ˽ºÍ°²È«ÎÊÌâ¡£

´úÀíµÄÓû§ÐèÒªÖªµÀËûÃÇ×Ô¼º²»±ÈÔËÐдúÀíµÄ²Ù×÷Ô±¸üÖµµÃÐÅÀµ£»HTTPЭÒé×ÔÉí²»Äܽâ¾öÕâ¸öÎÊÌâ¡£

µ±ºÏÊʵÄʱºò£¬¶ÔÃÜÂëѧµÄÕýÈ·Ó¦Ó㬿ÉÄܻᱣ»¤¹ã·ºµÄ°²È«ºÍÒþ˽¹¥»÷¡£ÃÜÂëѧµÄÌÖÂÛ²»ÔÚ±¾Ð­ÒéÎĵµµÄ·¶Î§ÄÚ¡£

15.7.1¹ØÓÚ´úÀíµÄ·þÎñ¹¥»÷µÄ¾Ü¾ø
 ´úÀíÊÇ´æÔڵġ£´úÀíºÜÄѱ»±£»¤¡£¹ØÓÚ´ËÑо¿ÕýÔÚ½øÐС£

16 ¸Ðл£¨Acknowledgment£©
Õâ·Ý¹æ·¶´óÁ¿Ê¹ÓÃÁËÀ©Õ¹BNFºÍDavidΪRFC 822 [9]¶¨ÒåµÄ³£Óýṹ¡£Í¬ÑùµÄ£¬Ëü¼ÌÐøÊ¹ÓÃÁ˺ܶàNathaniel BorenesteinºÍNed FreedΪMIME [7]ÌṩµÄ¶¨Òå¡£ÎÒÃÇÏ£ÍûÔڴ˹淶ÀïËûÃǵĽáÂÛÓÐÖúÓÚ¼õÉÙ¹ýÈ¥ÔÚHTTPºÍ»¥ÁªÍøÓʼþÏûÏ¢¸ñʽ¹ØÏµÉϵĻìÏý¡£

HTTPЭÒéÔÚÕ⼸ÄêÒѾ­ÓÐÁËÏ൱µÄ·¢Õ¹¡£ËüÊÜÒæÓÚ´óÁ¿»ý¼«µÄ¿ª·¢ÈËÔ±µÄÉçÇø--Ðí¶àÈËÒѾ­Í¨¹ýwww-talkÓʼþÁбí²ÎÓë½øÀ´--²¢ÇÒͨ³£¾ÍÊÇÄǸöÉçÇø¶ÔHTTPºÍÍòÎ¬ÍøµÄ³É¹¦×÷ÁËÖØ´ó¹±Ïס£ Marc Andreessen, Robert Cailliau, Daniel W. Connolly, Bob Denny, John Franks, Jean-Francois Groff , Phillip M. Hallam-Baker, Hakon W. Lie, Ari Luotonen, Rob McCool, Lou Montulli, Dave Raggett, Tony Sanders, ºÍ Marc VanHeyningenÒòΪËûÃÇÔÚ¶¨ÒåЭÒéÔçÆÚ·½ÃæµÄ¹±Ï×Ó¦¸ÃµÃµ½ÌرðµÄÔÞÓþ¡£

ÕâÆªÎĵµ´ÓËùÓÐÄÇЩ²Î¼ÓHTTP-WGµÄÈËÔ±µÄ×¢ÊÍÖлñµÃÁ˺ܴóµÄÒæ´¦¡£³ýÁËÒѾ­Ìáµ½µÄÄÇЩÈËÒÔÍ⣬ÏÂÁÐÈËÊ¿¶ÔÕâ¸ö¹æ·¶×ö³öÁ˹±Ï×£º

       Gary Adams                  Ross Patterson

       Harald Tveit Alvestrand     Albert Lunde

       Keith Ball                  John C. Mallery

       Brian Behlendorf            Jean-Philippe Martin-Flatin

       Paul Burchard               Mitra

       Maurizio Codogno            David Morris

       Mike Cowlishaw              Gavin Nicol

       Roman Czyborra              Bill Perry

       Michael A. Dolan            Jeffrey Perry

       David J. Fiander            Scott Powers

       Alan Freier                 Owen Rees

       Marc Hedlund                Luigi Rizzo

       Greg Herlihy                David Robinson

       Koen Holtman                Marc Salomon

       Alex Hopmann                Rich Salz

       Bob Jernigan                Allan M. Schiffman

       Shel Kaphan                 Jim Seidman

       Rohit Khare                 Chuck Shotton

       John Klensin                Eric W. Sink

       Martijn Koster              Simon E. Spero

       Alexei Kosut                Richard N. Taylor

       David M. Kristol            Robert S. Thau

       Daniel LaLiberte            Bill £¨BearHeart£© Weinman

       Ben Laurie                  Francois Yergeau

       Paul J. Leach               Mary Ellen Zurko

       Daniel DuBois               Josh Cohen

»º´æÉè¼ÆµÄÐí¶àÄÚÈݺͽéÉÜÓ¦¹éÓÚÒÔÏÂÈËÊ¿µÄ½¨ÒéºÍ×¢ÊÍ£ºShel Kaphan, Paul Leach, Koen Holtman, David Morris, ºÍ Larry Masinter¡£

´ó²¿·Ö¹æ·¶µÄ·¶Î§ÊÇ»ùÓÚAri LuotonenºÍJohn FranksÔçÆÚ×öµÄ¹¤×÷£¬ÒÔ¼°´ÓSteve ZillesÁíÍâ¼ÓÈëµÄÄÚÈÝ¡£

¸ÐлPalo AltoµÄ"cave men"¡£ÄãÃÇÖªµÀÄãÃÇÊÇË­¡£

Jim Gettys£¨ÕâÆªÎĵµÏÖÔڵıàÕߣ©ÌرðÏ£Íû¸ÐлRoy Fielding£¬ÕâÆªÎĵµÒÔǰµÄ±àÕߣ¬Á¬Í¬John Klensin, Jeff Mogul, Paul Leach, Dave Kristol, Koen Holtman, John Franks, Josh Cohen, Alex Hopmann, Scott Lawrence, ºÍLarry MasinterÒ»Æð¸ÐлËûÃǵİïÖú¡£»¹ÒªÌرð¸ÐлJeff MogulºÍScott Lawrence¶Ô“MUST/MAY/ SHOULD”ʹÓõļì²é¡£

Apache×飬Anselm Baird-Smith£¬JigsawµÄ×÷Õߣ¬ºÍHenrik FrystykÔÚÔçÆÚʵÏÖÁËRFC 2068£¬ÎÒÃÇÏ£Íû¸ÐлËûÃÇ·¢ÏÖÁËÐí¶àÕâÆªÎĵµÕý³¢ÊÔ¾ÀÕýµÄÎÊÌâ¡£

17 ²Î¿¼×ÊÁÏ £¨Reference£©
   [1] Alvestrand, H., "Tags for the Identification of Languages", RFC

       1766, March 1995.

   [2] Anklesaria, F., McCahill, M., Lindner, P., Johnson, D., Torrey,

       D. and B. Alberti, "The Internet Gopher Protocol £¨a distributed

       document search and retrieval protocol£©", RFC 1436, March 1993.

   [3] Berners-Lee, T., "Universal Resource Identifiers in WWW", RFC

       1630, June 1994.

   [4] Berners-Lee, T., Masinter, L. and M. McCahill, "Uniform Resource

       Locators £¨URL£©", RFC 1738, December 1994.

   [5] Berners-Lee, T. and D. Connolly, "Hypertext Markup Language -

       2.0", RFC 1866, November 1995.

   [6] Berners-Lee, T., Fielding, R. and H. Frystyk, "Hypertext Transfer

       Protocol -- HTTP/1.0", RFC 1945, May 1996.

   [7] Freed, N. and N. Borenstein, "Multipurpose Internet Mail

       Extensions £¨MIME£© Part One: Format of Internet Message Bodies",

       RFC 2045, November 1996.

   [8] Braden, R., "Requirements for Internet Hosts -- Communication

       Layers", STD 3, RFC 1123, October 1989.

   [9] Crocker, D., "Standard for The Format of HTTP://www.cnpaf.net/class/arp' target='_blank'>ARPA Internet Text

       Messages", STD 11, RFC 822, August 1982.

   [10] Davis, F., Kahle, B., Morris, H., Salem, J., Shen, T., Wang, R.,

        Sui, J., and M. Grinbaum, "WAIS Interface Protocol Prototype

        Functional Specification," £¨v1.5£©, Thinking Machines

        Corporation, April 1990.

   [11] Fielding, R., "Relative Uniform Resource Locators", RFC 1808,

        June 1995.

   [12] Horton, M. and R. Adams, "Standard for Interchange of USENET

        Messages", RFC 1036, December 1987.

   [13] Kantor, B. and P. Lapsley, "Network News Transfer Protocol", RFC

        977, February 1986.

   [14] Moore, K., "MIME £¨Multipurpose Internet Mail Extensions£© Part

        Three: Message Header Extensions for Non-ASCII Text", RFC 2047,

        November 1996.

   [15] Nebel, E. and L. Masinter, "Form-based File Upload in HTML", RFC

        1867, November 1995.

   [16] Postel, J., "Simple Mail Transfer Protocol", STD 10, RFC 821,

        August 1982.

   [17] Postel, J., "Media Type Registration Procedure", RFC 1590,

        November 1996.

   [18] Postel, J. and J. Reynolds, "File Transfer Protocol", STD 9, RFC

        959, October 1985.

   [19] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC 1700,

        October 1994.

   [20] Sollins, K. and L. Masinter, "Functional Requirements for

        Uniform Resource Names", RFC 1737, December 1994.

   [21] US-ASCII. Coded Character Set - 7-Bit American Standard Code for

        Information Interchange. Standard ANSI X3.4-1986, ANSI, 1986.

   [22] ISO-8859. International Standard -- Information Processing --

        8-bit Single-Byte Coded Graphic Character Sets --

        Part 1: Latin alphabet No. 1, ISO-8859-1:1987.

        Part 2: Latin alphabet No. 2, ISO-8859-2, 1987.

        Part 3: Latin alphabet No. 3, ISO-8859-3, 1988.

        Part 4: Latin alphabet No. 4, ISO-8859-4, 1988.

        Part 5: Latin/Cyrillic alphabet, ISO-8859-5, 1988.

        Part 6: Latin/Arabic alphabet, ISO-8859-6, 1987.

        Part 7: Latin/Greek alphabet, ISO-8859-7, 1987.

        Part 8: Latin/Hebrew alphabet, ISO-8859-8, 1988.

        Part 9: Latin alphabet No. 5, ISO-8859-9, 1990.

   [23] Meyers, J. and M. Rose, "The Content-MD5 Header Field", RFC

        1864, October 1995.

   [24] CHTTP://www.cnpaf.net/class/arp' target='_blank'>ARPenter, B. and Y. Rekhter, "Renumbering Needs Work", RFC

        1900, February 1996.

   [25] Deutsch, P., "GZIP file format specification version 4.3", RFC

        1952, May 1996.

   [26] Venkata N. Padmanabhan, and Jeffrey C. Mogul. "Improving HTTP

        Latency", Computer Networks and ISDN Systems, v. 28, pp. 25-35,

        Dec. 1995. Slightly revised version of paper in Proc. 2nd

        International WWW Conference '94: Mosaic and the Web, Oct. 1994,

        which is available at

        http://www.ncsa.uiuc.edu/SDG/IT94/Proceedings/DDay/mogul/HTTPLat

        ency.html.

   [27] Joe Touch, John Heidemann, and Katia Obraczka. "Analysis of HTTP

        Performance", <URL: http://www.isi.edu/touch/pubs/http-perf96/>,

        ISI Research Report ISI/RR-98-463, £¨original report dated Aug.

        1996£©, USC/Information Sciences Institute, August 1998.

   [28] Mills, D., "Network Time Protocol £¨Version 3£© Specification,

        Implementation and Analysis", RFC 1305, March 1992.

   [29] Deutsch, P., "DEFLATE Compressed Data Format Specification

        version 1.3", RFC 1951, May 1996.

   [30] S. Spero, "Analysis of HTTP Performance Problems,"

        http://sunsite.unc.edu/mdma-release/http-prob.html.

   [31] Deutsch, P. and J. Gailly, "ZLIB Compressed Data Format

        Specification version 3.3", RFC 1950, May 1996.

   [32] Franks, J., Hallam-Baker, P., Hostetler, J., Leach, P.,

        Luotonen, A., Sink, E. and L. Stewart, "An Extension to HTTP:

        Digest Access Authentication", RFC 2069, January 1997.

   [33] Fielding, R., Gettys, J., Mogul, J., Frystyk, H. and T.

        Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC

        2068, January 1997.

   [34] Bradner, S., "Key words for use in RFCs to Indicate Requirement

        Levels", BCP 14, RFC 2119, March 1997.

   [35] Troost, R. and Dorner, S., "Communicating Presentation

        Information in Internet Messages: The Content-Disposition

        Header", RFC 1806, June 1995.

   [36] Mogul, J., Fielding, R., Gettys, J. and H. Frystyk, "Use and

        Interpretation of HTTP Version Numbers", RFC 2145, May 1997.

        [jg639]

   [37] Palme, J., "Common Internet Message Headers", RFC 2076, February

        1997. [jg640]

   [38] Yergeau, F., "UTF-8, a transformation format of Unicode and

        ISO-10646", RFC 2279, January 1998. [jg641]

   [39] Nielsen, H.F., Gettys, J., Baird-Smith, A., Prud'hommeaux, E.,

        Lie, H., and C. Lilley. "Network Performance Effects of

        HTTP/1.1, CSS1, and PNG," Proceedings of ACM SIGCOMM '97, Cannes

        France, September 1997.[jg642]

   [40] Freed, N. and N. Borenstein, "Multipurpose Internet Mail

        Extensions £¨MIME£© Part Two: Media Types", RFC 2046, November

        1996. [jg643]

   [41] Alvestrand, H., "IETF Policy on Character Sets and Languages",

        BCP 18, RFC 2277, January 1998. [jg644]

   [42] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform Resource

        Identifiers £¨URI£©: Generic Syntax and Semantics", RFC 2396,

        August 1998. [jg645]

   [43] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S.,

        Leach, P., Luotonen, A., Sink, E. and L. Stewart, "HTTP

        Authentication: Basic and Digest Access Authentication", RFC

        2617, June 1999. [jg646]

   [44] Luotonen, A., "Tunneling TCP based protocols through Web proxy

        servers," Work in Progress. [jg647]

   [45] Palme, J. and A. Hopmann, "MIME E-mail Encapsulation of

        Aggregate Documents, such as HTML £¨MHTML£©", RFC 2110, March

        1997.

   [46] Bradner, S., "The Internet Standards Process -- Revision 3", BCP

        9, RFC 2026, October 1996.

   [47] Masinter, L., "Hyper Text Coffee Pot Control Protocol

        £¨HTCPCP/1.0£©", RFC 2324, 1 April 1998.

   [48] Freed, N. and N. Borenstein, "Multipurpose Internet Mail

        Extensions £¨MIME£© Part Five: Conformance Criteria and Examples",

        RFC 2049, November 1996.

   [49] Troost, R., Dorner, S. and K. Moore, "Communicating Presentation

        Information in Internet Messages: The Content-Disposition Header

        Field", RFC 2183, August 1997.

18 ×÷ÕßµØÖ·
   Roy T. Fielding

   Information and Computer Science

   University of California, Irvine

   Irvine, CA 92697-3425, USA

   Fax: +1 £¨949£© 824-1715

   EMail: fielding@ics.uci.edu

   James Gettys

   World Wide Web Consortium

   MIT Laboratory for Computer Science

   545 Technology Square

   Cambridge, MA 02139, USA

   Fax: +1 £¨617£© 258 8682

   EMail: jg@w3.org

   Jeffrey C. Mogul

   Western Research Laboratory

   Compaq Computer Corporation

   250 University Avenue

   Palo Alto, California, 94305, USA

   EMail: mogul@wrl.dec.com

   Henrik Frystyk Nielsen

   World Wide Web Consortium

   MIT Laboratory for Computer Science

   545 Technology Square

   Cambridge, MA 02139, USA

   Fax: +1 £¨617£© 258 8682

   EMail: frystyk@w3.org

   Larry Masinter

   Xerox Corporation

   3333 Coyote Hill Road

   Palo Alto, CA 94034, USA

   EMail: masinter@parc.xerox.com

   Paul J. Leach

   Microsoft Corporation

   1 Microsoft Way

   Redmond, WA 98052, USA

   EMail: paulle@microsoft.com

   Tim Berners-Lee

   Director, World Wide Web Consortium

   MIT Laboratory for Computer Science

   545 Technology Square

   Cambridge, MA 02139, USA

   Fax: +1 £¨617£© 258 8682

   EMail: timbl@w3.org

19 ¸½Â¼
19.1 »¥ÁªÍøÃ½ÌåÀàÐÍmessage/HTTPºÍapplication/HTTP
ÕâÆªÎĵµ³ýÁ˶¨ÒåHTTP/1.1ЭÒéÍ⣬»¹ÓÃ×÷»¥ÁªÍøÃ½½éÀàÐÍ"message/HTTP"ºÍ"application/HTTP"µÄ¹æ·¶¡£´ËÀàÐÍÓÃÓÚ·â×°Ò»¸öHTTPÇëÇóÏûÏ¢»òÏìÓ¦ÏûÏ¢£¬Õâ¼ÙÉè´ËÀàÐÍ×ñÑ­MIME¶Ô ËùÓГÏûÏ¢”ÀàÐ͹ØÓÚÐг¤¶ÈºÍ±àµÄÏÞÖÆ¡£application/HTTPÀàÐÍ¿ÉÒÔÓÃÀ´·â×°Ò»¸ö»òÕ߸ü¶àHTTPÇëÇó»òÏìÓ¦ÐÅÏ¢£¨·Ç»ìºÏµÄ£©µÄ´«Êä·¾¶£¨pipeline£©¡£ÏÂÁÐÊÇÔÚIANA[17]×¢²áµÄ¡£

        ý½éÀàÐÍÃû³Æ£º    message

        ý½é´ÎÀàÐÍÃû³Æ£º HTTP

        ±ØÐë²ÎÊý£º        ÎÞ

        ¿ÉÑ¡²ÎÊý£º        °æ±¾£¬ÐÅÏ¢ÀàÐÍ

        °æ±¾£º·â×°ÐÅÏ¢µÄHTTP°æ±¾ºÅ£¨ÀýÈ磬"1.1"£©¡£Èç¹û²»´æÔÚ£¬°æ±¾¿ÉÒÔ´ÓÏûÏ¢µÄµÚÒ»ÐÐÈ·¶¨¡£

        ÐÅÏ¢ÀàÐÍ£ºÐÅÏ¢ÀàÐÍ--"ÇëÇó"»òÕß"ÏìÓ¦"¡£Èç¹û²»´æÔÚ£¬ÀàÐÍ¿ÉÒÔ´Ó±¨ÎĵĵÚÒ»ÐÐÈ·¶¨¡£ 

        ±àÂ뿼ÂÇ£ºÖ»ÓÐ"7bit"£¬"8bit"£¬»òÕß"¶þ½øÖÆ"ÊÇÔÊÐíµÄ¡£

        °²È«¿¼ÂÇ£ºÎÞ

        ý½éÀàÐÍÃû³Æ£º    application

        ý½é´ÎÀàÐÍÃû³Æ£º HTTP

        ±ØÐë²ÎÊý£º        ÎÞ

        ¿ÉÑ¡²ÎÊý£º        °æ±¾£¬ÐÅÏ¢ÀàÐÍ

        °æ±¾£º·â×°ÐÅÏ¢µÄHTTP°æ±¾ºÅ£¨ÀýÈ磬"1.1"£©¡£Èç¹û²»´æÔÚ£¬°æ±¾¿ÉÒÔ´Ó±¨ÎĵĵÚÒ»ÐÐÈ·¶¨¡£

        ÐÅÏ¢ÀàÐÍ£ºÐÅÏ¢ÀàÐÍ--"request"»òÕß"response"¡£Èç¹û²»´æÔÚ£¬ÀàÐÍ¿ÉÒÔ´Ó±¨ÎĵĵÚÒ»ÐÐÈ·¶¨¡£     

        ±àÂ뿼ÂÇ£ºÓÃÕâÖÖÀàÐÍ·â×°µÄHTTPÐÅÏ¢ÊÇ"¶þ½øÖÆ"µÄ¸ñʽ£»µ±Í¨¹ýE-mail´«µÝµÄʱºòÒ»ÖÖºÏÊʵÄÄÚÈÝ´«Êä±àÂëÊDZØÐëµÄ¡£

        °²È«¿¼ÂÇ£ºÎÞ         

19.2 »¥ÁªÍøÃ½ÌåÀàÐÍmultipart/byteranges
µ±Ò»¸öHTTP206£¨²¿·ÖÄÚÈÝ£©ÏìÓ¦ÐÅÏ¢°üº¬¶à¸ö·¶Î§µÄÄÚÈÝ£¨ÇëÇóÏìÓ¦µÄÄÚÈÝÓжà¸ö·ÇÖØµþµÄ·¶Î§£©£¬ÕâЩÊÇ×÷Ϊһ¸ö¶à²¿·ÖÏûÏ¢Ö÷ÌåÀ´±»´«Ë͵ġ£ÕâÖÖÓÃ;µÄýÌåÀàÐͱ»³Æ×÷"multipart/byteranges"¡£

multipart/byterangesýÌåÀàÐͰüÀ¨Á½¸ö»òÕ߸ü¶àµÄ²¿·Ö£¬Ã¿Ò»¸ö¶¼ÓÐ×Ô¼ºContent-typeºÍContent-RangeÍ·Óò¡£±ØÐèµÄ·Ö½ç²ÎÊý£¨boundary parameter£©Ö¸¶¨·Ö½ç×Ö·û´®£¬´Ë·Ö½ç×Ö·û´®ÓÃÀ´¸ôÀëÿһ²¿·Ö¡£

        ý½éÀàÐÍÃû³Æ£º    multipart

        ý½é´ÎÀàÐÍÃû³Æ£º byteranges

        ±ØÐë²ÎÊý£º        boundary

        ¿ÉÑ¡²ÎÊý£º        ÎÞ

        ±àÂ뿼ÂÇ£ºÖ»ÓÐ"7bit"£¬"8bit"£¬»òÕß"¶þ½øÖÆ"ÊÇÔÊÐíµÄ¡£

        °²È«¿¼ÂÇ£ºÎÞ         

ÀýÈ磺

HTTP/1.1 206 Partial Content

   Date: Wed, 15 Nov 1995 06:25:24 GMT

   Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT

   Content-type:multipart/byteranges;boundary=THIS_STRING_SEPARATES

   --THIS_STRING_SEPARATES

   Content-type: application/pdf

   Content-range: bytes 500-999/8000

   ...µÚÒ»²¿·Ö...

   --THIS_STRING_SEPARATES

   Content-type: application/pdf

   Content-range: bytes 7000-7999/8000

   ...µÚ¶þ²¿·Ö

   --THIS_STRING_SEPARATES--

×¢Ò⣺

ÔÚʵÌ壨entity£©ÖУ¬ÔÚµÚÒ»¸ö·Ö½ç×Ö·û´®Ö®Ç°¿ÉÒÔÓжàÓàµÄCRLFs¡£

ËäÈ»RFC 2046 [40]ÔÊÐí·Ö½ç×Ö·û´®¼ÓÒýºÅ£¬µ«ÊÇһЩÏÖÓеÄʵÏֻ᲻ÕýÈ·µÄ´¦Àí·Ö½ç×Ö·û´®

Ðí¶àä¯ÀÀÆ÷ºÍ·þÎñÆ÷Êǰ´ÕÕ×Ö½Ú·¶Î§±ê×¼µÄÔçÆÚ²Ý°¸¹ØÓÚʹÓÃmultipart/x-byterangesýÌåÀàÐÍÀ´½øÐбàÂëµÄµÄ£¬Õâ¸ö²Ý°¸²»×ÜÊÇÍêÈ«ºÍHTTP/1.1ÖÐÃèÊöµÄ°æ±¾¼æÈÝ¡£

19.3 ¿íËɵÄÓ¦ÓóÌÐò £¨Tolerent Applications£©
ËäÈ»ÕâÆªÎĵµÁгöÁËHTTP/1.1ÏûÏ¢Ëù±ØÐëµÄÔªËØ£¬µ«ÊDz¢²»ÊÇËùÓеijÌÐòÔÚʵÏÖµÄʱºò¶¼ÊÇÕýÈ·µÄ¡£Òò´ËÎÒÃǽ¨Ò鵱ƫ²î¿ÉÒÔÃ÷È·½âÊ͵Äʱºò£¬ÔËËã³ÌÐò¶ÔÕâÖÖÆ«²îÓ¦¸ÃÊÇ¿íÈݵġ£

¿Í»§¶ËÓ¦¸Ã¿íËɵĽâÎöStatus-Line£¨×´Ì¬ÐУ©£»·þÎñÆ÷Ò²Ó¦¸Ã¿íËɵĽâÎöRequest-Line£¨ÇëÇóÐУ©¡£ÌرðµÄ£¬ËûÃÇÓ¦¸Ã¿ÉÒÔ½ÓÊÜÍ·ÓòÖ®¼äÈκÎÊýÁ¿µÄSP»òHT×Ö·û£¬¼´Ê¹Ð­Ò鹿¶¨Ö»ÓÐÒ»¸öSP¡£

ÏûϢͷÓòµÄÐÐÖÕ½á·ûÊÇCRLF¡£È»¶ø£¬µ±½âÎöÕâÑùµÄÍ·Óòʱ£¬ÎÒÃǽ¨ÒéÓ¦ÓóÌÐòÄÜʶ±ðµ¥Ò»LF×÷ΪÐÐÖÕ½á·û²¢ÄܺöÂÔCR¡£

ʵÌåÖ÷Ì壨entity-body£©µÄ×Ö·û¼¯Ó¦¸Ã±»±ê¼ÇΪӦÓÃÓÚʵÌåÖ÷Ìå×Ö·û±àÂëµÄ×îС¹«·Öĸ£¬²¢ÇÒÆÚÍû²»¶ÔʵÌå½øÐбê¼ÇÒªÓÅÓÚ¶ÔʵÌå±ê¼ÇΪUS-ASCII»òISO-8859-1¡£¼û3.7.1ºÍ3.4.1¡£

¶Ô¹ØÓÚÈÕÆÚ·ÖÎöºÍ±àÂëµÄÒªÇóµÄ¶îÍâ¹æÔòÒÔ¼°ÆäËü¶ÔÈÕÆÚ±àÂëµÄDZÔÚÎÊÌâ°üº¬£º

Ø         HTTP/1.1¿Í»§¶ËºÍ»º´æÓ¦¸Ã¼Ù¶¨Ò»¸öËÆºõÊÇ50¶àÄêÒÔºóµÄRFC-850ÈÕÆÚʵ¼ÊÉÏÊǹýÈ¥µÄ£¨ÕâÓÐÖúÓÚ½â¾ö"2000Äê"ÎÊÌ⣩¡£

Ø         Ò»¸öHTTP/1.1µÄʵÏÖ¿ÉÒÔÄÚ²¿µØ±íʾһ¸ö±ÈÕýÈ·ÈÕÆÚÖµ¸üÔçµÄÒѽâÎöºóµÄExpiresÈÕÆÚ£¬µ«ÊÇÒ»¶¨²»Òª£¨MUST NOT£©ÄÚ²¿µØ±íʾһ¸ö±ÈÕýÈ·ÈÕÆÚÖµ¸ü³ÙµÄÒѽâÎö¹ýµÄExpiresÈÕÆÚ¡£

Ø         ËùÓйýÆÚÈÕÆÚÏà¹ØµÄ¼ÆËã±ØÐëÓÃGMTʱ¼ä¡£±¾µØÊ±ÇøÒ»¶¨²»ÄÜ£¨MUST NOT£©Ó°ÏìÄêÁä»ò¹ýÆÚʱ¼äµÄ¼ÆËã¡£

Ø         Èç¹ûÒ»¸öHTTPÍ·Óò²»ÕýÈ·µÄЯ´øÁËÒ»¸ö·ÇGMTʱ¼äÇøµÄÈÕÆÚÖµ£¬ÄÇô±ØÐëÀûÓÃ×î±£ÊØµÄ¿ÉÄÜת»»°Ñ´ËÈÕÆÚֵת»»³ÉGMTʱ¼äÖµ¡£

19.4 HTTPʵÌåºÍRFC 2045ʵÌåÖ®¼äµÄÇø±ð
HTTP/1.1ʹÓÃÁËÐí¶àInternet Mail£¨RFC 822 [9]£©ºÍMultipurpose Internet Mail Extensions£¨MIME [7]£©ÀﶨÒåµÄ½á¹¹£¬È¥ÔÊÐíʵÌåÒÔ¶àÖÖ±íÏÖÐÎʽºÍÀ©Õ¹»úÖÆÈ¥´«Ê䡣Ȼ¶ø£¬RFC2045ÌÖÂÛÓʼþ£¬²¢ÇÒHTTPÓÐÐí¶à²»Í¬ÓÚRFC2045ÀïÃèÊöµÄÌØÕ÷¡£ÕâЩ²»Í¬±»Ð¡ÐĵØÌôÑ¡³öÀ´ÓÅ»¯¶þ½øÖÆÁ¬½ÓµÄÐÔÄÜ£¬ÎªÁËÔÊÐíʹÓÃеÄýÌåÀàÐÍÓиü´óµÄÁé»îÐÔ£¬ÎªÁËʹʱ¼ä±È½Ï±äµÃÈÝÒ×£¬ºÍΪÁ˳ÐÈÏһЩÔçÆÚHTTP·þÎñÆ÷ºÍ¿Í»§¶ËµÄʵЧ¡£

±¾¸½Â¼ÃèÊöÁËHTTPЭÒ鲻ͬÓÚRFC 2045µÄÌØÊâÇøÓò¡£ÔÚÑϸñµÄMIME»·¾³ÖеĴúÀíºÍÍø¹ØÓ¦¸ÃÒâʶµ½ÕâЩ²»Í¬²¢ÇÒÔÚ±ØÒªµÄʱºòÒªÌṩºÏÊʵØ×ª»»¡£´ÓMIME»·¾³µ½HTTPµÄ´úÀí·þÎñÆ÷ºÍÍø¹ØÒ²ÐèÒªÒâʶµ½ÕâЩ²»Í¬ÒòΪһЩת»»¿ÉÄÜÊÇÐèÒªµÄ¡£

19.4.1 MIME°æ±¾£¨MIME-Version£©
HTTP²»ÊÇÒ»¸ö×ñÊØMIMEµÄЭÒ顣Ȼ¶øHTTP/1.1ÏûÏ¢¿ÉÒÔ£¨MAY£©°üº¬Ò»¸öµ¥¶ÀµÄMIME-Version³£ÓÃÍ·ÓòÓÃÀ´Ö¸³öʲôÑùµÄMIMEЭÒé°æ±¾±»ÓÃÓÚÈ¥¹¹ÔìÏûÏ¢¡£ÀûÓÃMIME-VersionÍ·ÓòÖ¸Ã÷ÍêÈ«×ñÑ­MIMEЭÒéµÄÏûÏ¢£¨ÔÚRFC2045[7]£©¡£´úÀí/Íø¹ØÒª±£Ö¤ÍêÈ«×ñÊØMIMEЭÒéµ±°ÑHTTPÏûÏ¢Êä³öµ½ÑϸñMIME»·¾³µÄʱºò¡£

    MIME-Version   = "MIME-Version" ":" 1*DIGIT "." 1*DIGIT

ÔÚHTTP/1.1ÓõÄȱʡֵÊÇMIME1.0°æ±¾¡£È»¶ø£¬HTTP/1.1ÏûÏ¢µÄ½âÎöºÍÓïÒåÊÇÓɱ¾Îĵµ¶ø²»ÊÇMIME¹æ·¶¶¨ÒåµÄ¡£

19.4.2ת»»µ½¹æ·¶»¯ÐÎʽ £¨Conversion to Canoical Form£©
RFC 2045 [7]ÐèÒªÒ»¸öInternet mailʵÌåÔÚ±»´«Êä֮ǰҪ±»×ª»»³ÉÒ»¸ö¹æ·¶»¯µÄÐÎʽ£¬ÕâÔÚRFC2049[48]ÀïµÚËÄÕÂÀïÃèÊöµÄ¡£ÕâÆªÎĵµµÄ3.7.1½ÚÃèÊöÁ˵±ÓÃHTTPЭÒé´«ÊäʱÔÊÐíʹÓõĔtext”×ÓýÌåÀàÐ͵ÄÐÎʽ¡£RFC2046ÒªÇóÒÔÀàÐÍΪ“text”µÄÄÚÈÝÒªÓÃCRLF±íʾΪ»»Ðзû£¬ÒÔ¼°ÔÚ»»ÐзûÍâ½ûֹʹÓÃCR»òLF¡£

RFC 2046ÐèÒªÏñÔÚ"text"ÀàÐ͵ÄÄÚÈÝÀïÒ»Ñù£¬ÓÃCRLF±íʾÐмä¸ô·û²¢½ûÖ¹ÔÚÐмä¸ô·ûÐòÁÐÒÔÍâʹÓÃCR»òÕßLF¡£HTTPÔÊÐíCRLF£¬µ¥¸öCR£¬ºÍµ¥¸öLFÀ´±íʾһ¸ö»»ÐзûÔÚÒ»¸öÎı¾ÄÚÈÝÏûÏ¢ÖС£

ÔÚ¿ÉÄܵĵط½£¬´ÓHTTPµ½ÑϸñMIME»·¾³µÄ´úÀí»òÍø¹ØÓ¦¸Ã£¨SHOULD£©°ÑRFC2049ÀïÃèÊöµÄtextýÌåÀàÐÍÀïËùÓл»Ðзûת»»³ÉRFC2049ÀïCRLFµÄ¹æ·¶ÐÎʽ¡£È»¶ø£¬×¢ÒâÕâ¿ÉÄÜÔÚContent-Encoding³öÏÖµÄʱºò£¬ÒÔ¼°HTTPÔÊÐíÀûÓÃһЩûÓÐÀûÓÃ13ºÍ10´ú±íCRºÍLFµÄ×Ö·û¼¯Ê±ºò¶¼»á±äµÃ¸´ÔÓ¡£

ʵÏÖÕßÓ¦¸Ã×¢Òâת»»½«»áÆÆ»µÈκÎÓ¦ÓÃÓÚÔ´ÄÚÈÝ£¨original content£©µÄÃÜÂëУÑéºÍ£¬³ý·ÇÔ´ÄÚÈÝÒѾ­Êǹ淶»¯ÐÎʽ¡£Òò´Ë£¬¶ÔÈκÎÔÚHTTPÖÐʹÓÃУÑéºÍµÄÄÚÈݱ»½¨ÒéÒª±íʾΪ¹æ·¶»¯ÐÎʽ¡£

19.4.3ÈÕÆÚ¸ñʽµÄת»» £¨Conversion of Date Formate£©
ΪÁ˼ò»¯ÈÕÆÚ±È½ÏµÄ¹ý³Ì£¬HTTP/1.1ʹÓÃÁËÒ»¸öÏÞÖÆµÄÈÕÆÚ¸ñʽ£¨3.3.1½Ú£©¡£ÆäËüЭÒéµÄ´úÀíºÍÍø¹ØÓ¦¸Ã±£Ö¤ÈκÎÏûÏ¢Àï³öÏÖµÄDateÍ·ÓòÓ¦¸Ã×ñÑ­HTTP/1.1¹æ¶¨µÄ¸ñʽ£¬Èç¹ûÓбØÒªÐèÒªÖØÐ´´ËÈÕÆÚ¡£

19.4.4 Content-EncodingÍ·Óò½éÉÜ £¨Introduction of Content-Encoding£©
RFC 2045²»°üº¬ÈκεȼÛÓÚHTTP/1.1ÀïContent-EncodingÍ·ÓòµÄ¸ÅÄî¡£ÒòΪÕâ¸öÍ·Óò×÷ΪýÌåÀàÐÍ£¨media type£©µÄÐÞÊΣ¬´ÓHTTPЭÒéµ½MIME×ñÊØµÄЭÒéµÄ´úÀíºÍÍø¹ØÔÚת·¢ÏûϢ֮ǰ±ØÐë¼ÈÄܸıäContent-TypeÍ·ÓòµÄÖµ£¬Ò²ÄܽâÂëʵÌåÖ÷Ì壨entity-body£©.¡££¨Ò»Ð©ÎªInternet mailÀàÐ͵ÄContent-TypeµÄʵÑéÐÔµÄÓ¦ÓÃÒѾ­Ê¹ÓÃÁËÒ»¸öýÌåÀàÐͲÎÊý“; conversions=<content-coding>”È¥Ö´ÐеȼÛÓÚContent-EncodingµÄ¹¦ÄÜ¡£È»¶ø£¬´Ë²ÎÊý²¢²»ÊÇRFC2045µÄ²¿·Ö£©

19.4.5ûÓÐContent-Transfer-EncodingÍ·Óò
HTTP²»Ê¹ÓÃRFC 2045ÀïµÄContent-Transfer-Encoding£¨CTE£©Í·Óò¡£´ÓʹÓÃMIMEЭÒéµ½HTTPµÄ´úÀíºÍÍø¹ØÔÚ°ÑÏìÓ¦ÏûÏ¢·¢Ë͸øHTTP¿Í»§¶Ë֮ǰ±ØÐëɾ³ýÈκηǵȼۣ¨non-identity£¬Òë×¢£ºidentity±àÂ룬±íʾûÓнøÐÐÈκαàÂ룩CTE£¨"quoted-printable"»ò"base64"£©±àÂë¡£

´ÓHTTPµ½MIMEЭÒé×ñÑ­µÄ´úÀíºÍÍø¹ØÒªÈ·±£ÏûÏ¢ÔÚÄǸöЭÒ鰲ȫ´«ÊäÉÏÊÇÓÃÕýÈ·µÄ¸ñʽºÍÕýÈ·µÄ±àÂ룬“°²È«´«Êä”ÊÇͨ¹ýʹÓõÄЭÒéµÄÏÞÖÆ¶ø±»¶¨ÒåµÄ¡£ÕâÑùÒ»¸ö´úÀí»òÍø¹ØÓ¦¸ÃÓúÏÊʵÄContent-Transfer-EncodingÍ·ÓòÀ´±ê¼ÇÊý¾ÝÈç¹ûÕâÑù×ö½«Ìá¸ß°²È«´«ÊäµÄ¿ÉÄÜÐÔ¡£

19.4.6 Transfer-EncodingÍ·ÓòµÄ½éÉÜ
HTTP/1.1½éÉÜÁËTransfer-EncodingÍ·Óò£¨14.41½Ú£©¡£´úÀí/Íø¹ØÔÚת·¢¾­ÓÉMIMEЭÒéµÄÏûϢ֮ǰ±ØÐëÒÆ³ýÈκδ«Êä±àÂë¡£

Ò»¸ö½âÂë"chunked"´«Êä´úÂ루3.6½Ú£©µÄ³ÌÐò¿ÉÒÔÓôúÂë±íʾÈçÏ£º

       length := 0

       read chunk-size, chunk-extension £¨if any£© and CRLF

       while £¨chunk-size > 0£© {

          read chunk-data and CRLF

          append chunk-data to entity-body

          length := length + chunk-size

          read chunk-size and CRLF

       }

       read entity-header

       while £¨entity-header not empty£© {

          append entity-header to existing header fields

          read entity-header

       }

       Content-Length := length

       Remove "chunked" from Transfer-Encoding

19.4.7 MHTMLºÍÐ㤶ÈÏÞÖÆ
ºÍMHTMLʵÏÖ¹²Ïí´úÂëµÄHTTPʵÏÖÐèÒªÁ˽âMIMEÐ㤶ÈÏÞÖÆ¡£ÒòΪHTTPûÓÐÕâ¸öÏÞÖÆ£¬HTTP²¢²»ÕÛµþ³¤ÐС£ÓÃHTTP´«ÊäµÄMHTMLÏûÏ¢×ñÊØËùÓÐMHTMLµÄ¹æ¶¨£¬°üÀ¨Ðг¤¶ÈµÄÏÞÖÆºÍÕÛµþ£¬¹æ·¶»¯µÈ£¬ÒòΪHTTP´«ÊäËùÓÐÏûÏ¢Ö÷Ì壨¼û3.7.2£©²¢ÇÒ²»½âÎöÏûÏ¢µÄÄÚÈݺÍÏûÏ¢Öаüº¬ÈκÎMIMEÍ·Óò¡£

19.5 ÆäËüÌØÕ÷
RFC 1945ºÍRFC 2068ÀïһЩЭÒéÔªËØ±»Ò»Ð©ÒѾ­´æÔÚµÄHTTPʵÏÖʹÓ㬵«ÊÇÕâЩЭÒéÔªËØ¶ÔÓÚ´ó¶àÊýHTTP/1.1Ó¦ÓóÌÐò¼È²»¼æÈÝÒ²²»ÕýÈ·¡£ÊµÏÖÕß±»½¨ÒéÈ¥Á˽âÕâÐ©ÌØÕ÷£¬µ«ÊDz»ÄÜÒÀÀµÓÚËüÃǵijöÏÖ»ò²»ÒÀÀµÓÚÓëÆäËüHTTP/1.1Ó¦ÓóÌÐòµÄ»¥²Ù×÷ÐÔ¡£ÕâÐ©ÌØÕ÷ÖеÄÒ»Ð©ÌØÕ÷ÃèÊöÁËʵÑéÐÔµÄÌØÕ÷£¬ÒÔ¼°»¹ÓÐÒ»Ð©ÌØÕ÷ÃèÊöÁËûÓÐÔÚ»ù±¾HTTP/1.1¹æ·¶Àï±»ÃèÊöµÄʵÑéÐÔ²¿ÊðÌØÕ÷¡£

һЩÆäËüÍ·Óò£¬ÈçContent-DispositonºÍTitleÍ·Óò£¬ËûÃÇÀ´×ÔÓÚHTTP://www.cnpaf.net/class/smtp' target='_blank'>SMTPºÍMIMEЭÒ飬ËûÃÇͬÑù¾­³£±»ÊµÏÖ£¨¼û2076[37]£©.

19.5.1 Content-Disposition
Content-DispositionÏìӦͷÓò±»½¨Òé×÷Ϊһ¸öÕâÑùµÄÓÃ;£¬ÄǾÍÊÇÈç¹ûÓû§ÇëÇóҪʹÄÚÈݱ»±£´æÎªÒ»¸öÎļþ£¬ÄÇô´ËÍ·Óò±»Ô´·þÎñÆ÷ʹÓÃÈ¥½¨ÒéµÄÒ»¸öȱʡµÄÎļþÃû¡£´ËÓÃ;À´×ÔÓÚRFC1806[35]¹ØÓÚ¶ÔContent-DispositionµÄ¶¨Òå¡£

        content-disposition = "Content-Disposition" ":"

                              disposition-type *£¨ ";" disposition-parm £©

        disposition-type = "attachment" | disp-extension-token

        disposition-parm = filename-parm | disp-extension-parm

        filename-parm = "filename" "=" quoted-string

        disp-extension-token = token

        disp-extension-parm = token "=" £¨ token | quoted-string £©

 Ò»¸öÀý×ÓÊÇ£º

      Content-Disposition: attachment; filename="fname.ext"

½ÓÊÕÓû§µÄ´úÀí²»Ó¦¸Ã£¨SHOULD NOT£©¹Ø×¢ÈκÎÔÚfilename-parm²ÎÊýÖгöÏÖµÄÎļþ·¾¶ÐÅÏ¢£¬Õâ¸ö²ÎÊý±»ÈÏΪÔÚÕâ´Î½ö½öÊÇÓ¦ÓÃÓÚHTTPʵÏÖ¡£ÎļþÃûÓ¦¸Ã£¨SHOULD£©Ö»±»µ±×÷Ò»¸öÖÕ¶Ë×é¼þ¡£

Èç¹û´ËÍ·ÓòÓÃÓÚÒ»¸öContent-TypeΪapplication/octet-streamÏìÓ¦ÀÄÇôº¬Òå¾ÍÊÇÓû§´úÀí²»Ó¦¸ÃÕ¹ÏÖÏìÓ¦£¬µ«ÊÇËüÓ¦¸ÃÖ±½Ó½øÈëÒ»¸ö‘±£´æÏìӦΪ…’¶Ô»°¿ò¡£

¼û15.5½Ú¹ØÓÚContent-DispositionµÄµÄ°²È«ÎÊÌâ¡£

19.6 ºÍÒÔǰ°æ±¾µÄ¼æÈÝ
ÒªÇóºÍÒÔǰµÄ°æ±¾µÄ¼æÈݳ¬³öÁËЭÒ鹿·¶µÄ·¶Î§¡£È»¶øHTTP/1.1ÓÐÒâÉè¼Æ³ÉºÜÈÝÒ×Ö§³ÖÒÔǰµÄ°æ±¾¡£±ØÐëÖµµÃ×¢ÒâµÄÊÇ£¬ÔÚдÕâ·Ý¹æ·¶µÄʱºò£¬ÎÒÃÇÏ£ÍûÉÌÒµµÄHTTP/1.1·þÎñÆ÷È¥£º

      --½ÓÊÜHTTP/0.9£¬1.0ºÍ1.1ÇëÇóµÄÇëÇóÐУ¨Request-Line£©¸ñʽ£»

      --Àí½âHTTP/0.9£¬1.0»ò1.1¸ñʽÖеÄÈκÎÓÐЧÇëÇó£»

      --Ç¡µ±µØÓÿͻ§¶ËʹÓõÄÖ÷Òª°æ±¾À´ÏìÓ¦¡£

 ²¢ÇÒÎÒÃÇÏ£ÍûHTTP/1.1µÄ¿Í»§¶Ë£º

      --½ÓÊÜHTTP/1.0ºÍ1.1ÏìÓ¦µÄ״̬ÐУ¨Status-Line£©¸ñʽ£»

      --¶®µÃHTTP/0.9£¬1.0»ò1.1µÄ¸ñʽµÄÈκÎÓÐЧµÄÏìÓ¦¡£

¶Ô´ó¶àÊýHTTP/1.0µÄʵÏÖ£¬Ã¿Ò»¸öÁ¬½ÓÒªÔÚÇëÇó֮ǰ±»¿Í»§¶Ë½¨Á¢£¬²¢ÇÒÔÚ·¢ËÍÏìÓ¦Ö®ºóÒª±»·þÎñÆ÷¹Ø±Õ¡£Ò»Ð©ÊµÏÖÁËÔÚRFC 2068 [33]µÄ19.7.1½ÚÃèÊöµÄ³Ö¾ÃÁ¬½ÓµÄKeep-Alive°æ±¾¡£

19.6.1¶ÔHTTP/1.0µÄ¸Ä±ä
ÕâÒ»²¿·Ö×ܽáHTTP/1.0ºÍHTTP/1.1Ö®¼äÖ÷ÒªµÄÇø±ð¡£

19.6.1.1 ¶Ô¶àÖ÷»úweb·þÎñÆ÷ºÍ±£ÁôIPµØÖ·¼ò»¯µÄ¸Ä±ä
¿Í»§¶ËºÍ·þÎñÆ÷±ØÐëÖ§³ÖHostÇëÇóÍ·Óò£¬²¢ÇÒÈç¹ûHostÇëÇóÍ·ÓòÔÚHTTP/1.1ÇëÇóÀïȱÉÙ£¬ÄÇô·þÎñÆ÷Ó¦¸Ã±¨¸æÒ»¸ö´íÎ󣬲¢ÇÒ·þÎñÆ÷ÄܽÓÊÜÒ»¸ö¾ø¶ÔURIs£¨5.1.2½Ú£©£¬¶ÔÓÚÕâ¸öÒªÇóÊÇÔڴ˹淶Àï×îÖØÒªµÄ¸Ä±ä¡£ÉÏÃæµÄ¸Ä±ä½«ÔÊÐí»¥ÁªÍø£¬Ò»µ©¾ÉµÄ¿Í»§¶Ë²»ÔÙ³£ÓÃʱ£¬È¥Ö§³ÖÒ»¸öIPµØÖ·µÄ¶à¸öwebÕ¾µã£¬Õâ´ó´ó¼ò»¯ÁË´óÐÍÔËËãµÄweb·þÎñÆ÷£¬ÔÚÄÇÀï·ÖÅä¶à¸öIPµØÖ·¸øÒ»¸öÖ÷»ú£¨host£©»á²úÉúºÜÑÏÖØµÄÎÊÌâ¡£´Ë»¥ÁªÍøÕÕÑùÄָܻ´ÕâÑùÒ»¸öIPµØÖ·£¬´ËIPµØÖ·×÷ÎªÌØÊâÄ¿µÄ±»·ÖÅ䏸±»ÓÃÓÚ¸ù¼¶HTTPURLsµÄÓòÃû¡£¸ø¶¨webµÄÔö³¤ËÙ¶È£¬·þÎñÆ÷µÄ²¿ÊðÊýÁ¿²¿£¬ÄÇôËùÓÐHTTPʵÏÖ£¨°üÀ¨¶ÔÒÑ´æHTTP/1.0Ó¦ÓóÌÐò£©Ó¦¸ÃÕýÈ·µØÂú×ãÏÂÃæÕâЩÐèÇó£º

    --¿Í»§¶ËºÍ·þÎñÆ÷¶¼±ØÐ루MUST£©Ö§³ÖHostÇëÇóÍ·Óò¡£

    --·¢ËÍHTTP/1.1ÇëÇóµÄ¿Í»§¶Ë±ØÐ루MUST£©·¢ËÍHostÍ·Óò¡£

    --Èç¹ûHTTP/1.1ÇëÇó²»°üÀ¨HostÇëÇóÍ·Óò£¬·þÎñÆ÷¾Í±ØÐ루MUST£©±¨¸æ´íÎó400£¨Bad Request£©¡£

    --·þÎñÆ÷±ØÐ루MUST£©½ÓÊܾø¶ÔURIs£¨absolute URIs£©¡£

19.6.2ºÍHTTP/1.0³ÖÐøÁ¬½ÓµÄ¼æÈÝ
һЩ¿Í»§¶ËºÍ·þÎñÆ÷¿ÉÄÜÏ£ÍûºÍһЩ¶ÔÒÔǰ³ÖÐøÁ¬½ÓʵÏÖµÄHTTP/1.0¿Í»§¶ËºÍ·þÎñÆ÷¼æÈÝ¡£HTTP/1.0³Ö¾ÃÁ¬½ÓÐèÒªÏÔʾµØÐ­ÉÌ£¬ÒòΪËüÃDz»ÊÇȱʡµÄÐÐΪ¡£³Ö¾ÃÁ¬½ÓµÄHTTP/1.0ʵÑéÐÔµÄʵÏÖÓдíÎ󣬲¢ÇÒHTTP/1.1ÀïµÄÐµĹ¦Äܱ»Éè¼Æ³ÉÈ¥½ÃÕýÕâЩÎÊÌâ¡£´ËÎÊÌâÊÇһЩÒѾ­´æÔÚµÄ1.0¿Í»§¶Ë¿ÉÄܻᷢËÍKeep-AliveÍ·Óò¸ø²»Àí½âÁ¬½ÓµÄ´úÀí·þÎñÆ÷£¬È»ºó´úÀí·þÎñÆ÷»á°Ñ´ËKeep-Aliveת·¢¸øÏÂÒ»¸öÈëÁ÷£¨inbound£©·þÎñÆ÷¡£ËùÒÔHTTP/1.0¿Í»§¶Ë±ØÐë½ûÖ¹ÀûÓÃKeep-Aliveµ±ºÍ´úÀí»á»°µÄʱºò¡£

È»¶ø£¬ºÍ´úÀí½øÐлỰ×îÖØÒªÊÇÀûÓó־ÃÁ¬½Ó£¬ËùÒÔÄǸö½ûÖ¹ºÜÏÔÈ»²»Äܱ»½ÓÊÜ¡£Òò´Ë£¬ÎÒÃÇÐèҪһЩÆäËüµÄ»úÖÆÈ¥Ö¸Ã÷ÐèÒªÒ»¸ö³Ö¾ÃÁ¬½Ó£¬²¢ÇÒËü±ØÐëÄܰ²È«µÄʹÓÃÉõÖÁµ±ºÍºöÂÔÁ¬½ÓµÄÀÏ´úÀí¡£³Ö¾ÃÁ¬½ÓȱʡÊÇΪHTTP/1.1ÏûÏ¢µÄ£»ÎªÁËÉùÃ÷·Ç³Ö¾ÃÁ¬½Ó£¨¼û14.10½Ú£©£¬ÎÒÃǽéÉÜÒ»¸öеĹؼü×Ö£¨Connection£ºclose£©¡£

³Ö¾ÃÁ¬½ÓµÄÔ´HTTP/1.0µÄÐÎʽ£¨the Connection: Keep-Alive and Keep-Alive Í·Óò£©ÔÚRFC2068Àï˵Ã÷

19.6.3¶ÔRFC 2068µÄ¸Ä±ä
ÕâÆª¹æ·¶ÒѾ­±»×ÐϸµÄÉó²éÀ´¾ÀÕý¹Ø¼ü×ÖµÄÓ÷¨ºÍÏû³ýËüÃÇµÄÆçÒ壻RFC 2068ÔÚ×ñÊØRFC 2119 [34] ÖÆ¶¨µÄЭ¶¨·½ÃæÓкܶàÎÊÌâ¡£

³ÎÇåÄĸö´íÎó´úÂ뽫»áʹÈëÁ÷·þÎñÆ÷ʧÁ飨ÀýÈçHTTP://www.cnpaf.net/class/dns' target='_blank'>DNSʧÁ飩¡££¨10.5.5½Ú£©

CREATEÓÐÒ»¸öÌØµãµ±Ò»¸ö×ÊÔ´µÚÒ»´Î±»´´½¨µÄʱºò±ØÐëÐèÒªÒ»¸öEtag¡££¨10.2.2½Ú£©

Content-BaseÍ·Óò´Ó´Ë¹æ·¶Àïɾ³ýÁË£ºËüÎÞ·¨¹ã·ºµÄʵÏÖ£¬²¢ÇÒÔÚûÓн¡×³µÄÀ©Õ¹»úÖÆµÄÇé¿öÏ£¬Ã»Óмòµ¥µÄ£¬°²È«µÄ·½Ê½È¥½éÉÜËü¡£²¢ÇÒ£¬ËüÒÔÒ»ÖÖÏàËÆµÄ¶ø²»ÊÇÏàͬµÄ·½Ê½ÔÚMHTML[45]ÀﱻʹÓá£

ÂÔ…..

20 Ë÷Òý £¨Index£©
21 È«²¿°æÈ¨ÉùÃ÷
 ÂÔ…..

ÈçÐèת½ØÇë×¢Ã÷³ö´¦£ºÀ´Ô´ÖйúЭÒé·ÖÎöÍø

------·Ö¸ôÏß----------------------------
¶¥Ò»ÏÂ
(373)
77.4%
²ÈÒ»ÏÂ
(109)
22.6%
------·Ö¸ôÏß----------------------------
×îÐÂÆÀÂÛ ²é¿´ËùÓÐÆÀÂÛ
·¢±íÆÀÂÛ ²é¿´ËùÓÐÆÀÂÛ
Çë×Ô¾õ×ñÊØ»¥ÁªÍøÏà¹ØµÄÕþ²ß·¨¹æ£¬ÑϽû·¢²¼É«Çé¡¢±©Á¦¡¢·´¶¯µÄÑÔÂÛ¡£
ÆÀ¼Û:
񡀂:
Óû§Ãû: ÃÜÂë: ÑéÖ¤Âë:
ÍÆ¼öÄÚÈÝ