cnpaf.net - ÖйúЭÒé·ÖÎöÍø

ͶµÝÎÄÕ Ͷ¸åÖ¸ÄÏ RSS¶©ÔÄ ÍøÕ¾Í¨¸æ:
ËÑË÷: ÄúµÄλÖãºÖ÷Ò³>ЭÒé´óÈ«>HTTPЭÒé>ÔĶÁÎÄÕÂ

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

11-25 10:15 À´Ô´:ЭÒé·ÖÎöÂÛ̳ ×÷Õß:sunchaojin ¡¾´ó ÖРС¡¿ ÆÀÂÛ£º0 Ìõ ä¯ÀÀ: ´Î

˵Ã÷

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

“»¥ÁªÍø¹Ù·½Ð­Òé±ê×¼”£¨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Ò²ÊÇÓÃÓÚÓû§´úÀíÖ®¼ä¼°´úÀí/Íø¹Øµ½ÆäËûÍøÂçϵͳµÄͨÓÃͨÐÅЭÒ飬ÕâÑùµÄÍøÂçϵͳ¿ÉÄÜÓÉSMTP[16],NNTP[13],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£©Ïò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£¬FTP£¬LDAP·þÎñÆ÷£©»òÕßËüΪÍê³ÉÇëÇó¶øÐèÒª·ÃÎʵÄһЩÆäËûµÄ¸¨ÖúÐÔ·þÎñÆ÷£¨ÀýÈ磺DNS·þÎñÆ÷£©¡£

×¢Ò⣺һЩ²¿ÊðµÄ´úÀí·þÎñÆ÷½«»á·µ»Ø400»ò500ÏìÓ¦µ±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£©
´ó¶àÊýÏìÓ¦°üº¬Ò»¸öʵÌ壬´ËʵÌå°üº