锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
銆銆鏈枃灝嗚緇嗕粙緇嶅弽鍚戜唬鐞嗘湇鍔$殑姒傚康浠ュ強濡備綍鍒╃敤鍙嶅悜浠g悊鏈嶅姟鍣ㄦ彁楂?span lang=EN-US>WEB鏈嶅姟鍣ㄧ殑鎬ц兘鍜屽畨鍏ㄦс?span lang=EN-US>
銆銆涓錛庡弽鍚戜唬鐞嗙殑姒傚康
銆銆浠涔堟槸鍙嶅悜浠g悊鍛紵鍏跺疄錛屽弽鍚戜唬鐞嗕篃灝辨槸閫氬父鎵璇寸殑WEB鏈嶅姟鍣ㄥ姞閫燂紝瀹冩槸涓縐嶉氳繃鍦ㄧ箒蹇欑殑WEB鏈嶅姟鍣ㄥ拰Internet涔嬮棿澧炲姞涓涓珮閫熺殑WEB緙撳啿鏈嶅姟鍣紙鍗籌細WEB鍙嶅悜浠g悊鏈嶅姟鍣級鏉ラ檷浣庡疄闄呯殑WEB鏈嶅姟鍣ㄧ殑璐熻澆銆傚吀鍨嬬殑緇撴瀯濡備笅鍥炬墍紺猴細
銆銆Web鏈嶅姟鍣ㄥ姞閫燂紙鍙嶅悜浠g悊錛夋槸閽堝Web鏈嶅姟鍣ㄦ彁渚涘姞閫熷姛鑳界殑銆傚畠浣滀負浠g悊Cache錛屼絾騫朵笉閽堝嫻?瑙堝櫒鐢ㄦ埛錛岃岄拡瀵逛竴鍙版垨澶氬彴鐗瑰畾Web鏈嶅姟鍣紙榪欎篃鏄弽鍚戜唬鐞嗗悕縐扮殑鐢辨潵錛夈傚疄鏂藉弽鍚戜唬鐞嗭紙濡備笂鍥炬墍紺猴級錛屽彧瑕佸皢Reverse Proxy Cache璁懼鏀劇疆鍦ㄤ竴鍙版垨澶氬彴Web鏈嶅姟鍣ㄥ墠绔嵆鍙傚綋浜掕仈緗戠敤鎴瘋闂煇涓?span lang=EN-US>WEB鏈嶅姟鍣ㄦ椂錛岄氳繃DNS鏈嶅姟鍣ㄨВ鏋愬悗鐨?span lang=EN-US>IP鍦板潃鏄?span lang=EN-US>Reverse Proxy Server鐨?span lang=EN-US>IP鍦板潃,鑰岄潪鍘熷Web鏈嶅姟鍣ㄧ殑IP鍦板潃,榪欐椂Reverse Proxy Server璁懼鍏呭綋Web鏈嶅姟鍣紝嫻忚鍣ㄥ彲浠ヤ笌瀹冭繛鎺ワ紝鏃犻渶鍐嶇洿鎺ヤ笌Web鏈嶅姟鍣ㄧ浉榪炪傚洜姝わ紝澶ч噺Web鏈嶅姟宸ヤ綔閲忚鍗歌澆鍒板弽鍚戜唬鐞嗘湇鍔′笂銆備笉浣嗚兘澶熼槻 姝㈠閮ㄧ綉涓繪満鐩存帴鍜?span lang=EN-US>web鏈嶅姟鍣ㄧ洿鎺ラ氫俊甯︽潵鐨勫畨鍏ㄩ殣鎮o紝鑰屼笖鑳藉寰堝ぇ紼嬪害涓婂噺杞?span lang=EN-US>web鏈嶅姟鍣ㄧ殑璐熸媴錛屾彁楂樿闂熷害銆?span lang=EN-US>
銆銆浜岋紟 鍙嶅悜浠g悊鍜屽叾瀹冧唬鐞嗙殑姣旇緝
銆銆涓嬮潰灝嗗鍑犵鍏稿瀷鐨勪唬鐞嗘湇鍔′綔涓涓畝鍗曠殑姣旇緝銆傚湪緗戠粶涓婂父瑙佺殑浠g悊鏈嶅姟鍣ㄦ湁涓夌錛?span lang=EN-US>
銆銆1錛?鏍囧噯鐨勪唬鐞嗙紦鍐叉湇鍔″櫒
銆銆涓涓爣鍑嗙殑浠g悊緙撳啿鏈嶅姟琚敤浜庣紦瀛橀潤鎬佺殑緗戦〉錛堜緥濡傦細html鏂囦歡鍜屽浘鐗囨枃浠剁瓑錛夊埌鏈湴緗戠粶涓婄殑涓鍙頒富鏈轟笂錛堝嵆浠g悊鏈嶅姟鍣級銆傚綋琚紦瀛樼殑欏甸潰琚浜屾璁塊棶鐨勬椂鍊欙紝嫻忚鍣ㄥ皢鐩存帴浠庢湰鍦頒唬鐞嗘湇鍔″櫒閭i噷鑾峰彇璇鋒眰鏁版嵁鑰屼笉鍐嶅悜鍘?span lang=EN-US>web绔欑偣璇鋒眰鏁版嵁銆傝繖鏍峰氨鑺傜渷浜嗗疂璐電殑緗戠粶甯﹀錛岃屼笖鎻愰珮浜嗚闂熷害銆備絾鏄紝瑕佹兂瀹炵幇榪欑鏂瑰紡錛屽繀欏誨湪姣忎竴涓唴閮ㄤ富鏈虹殑嫻忚鍣ㄤ笂鏄庣‘鎸囨槑浠g悊鏈嶅姟鍣ㄧ殑IP鍦板潃鍜岀鍙e彿銆傚鎴風涓婄綉鏃訛紝姣忔閮芥妸璇鋒眰閫佺粰浠g悊鏈嶅姟鍣ㄥ鐞嗭紝浠g悊鏈嶅姟鍣ㄦ牴鎹姹傜‘瀹氭槸鍚﹁繛鎺ュ埌榪滅▼web鏈嶅姟鍣ㄨ幏鍙栨暟鎹傚鏋滃湪鏈湴緙撳啿鍖烘湁鐩爣鏂囦歡錛屽垯鐩存帴灝嗘枃浠朵紶緇欑敤鎴峰嵆鍙傚鏋滄病鏈夌殑璇濆垯鍏堝彇鍥炴枃浠訛紝鍏堝湪鏈湴淇濆瓨涓浠界紦鍐詫紝鐒跺悗灝嗘枃浠跺彂緇欏鎴風嫻忚鍣ㄣ?span lang=EN-US>
銆銆2錛?閫忔槑浠g悊緙撳啿鏈嶅姟鍣?span lang=EN-US>
銆銆閫忔槑浠g悊緙撳啿鏈嶅姟鍜屾爣鍑嗕唬鐞嗘湇鍔″櫒鐨勫姛鑳藉畬鍏ㄧ浉鍚屻備絾鏄紝浠g悊鎿嶄綔瀵瑰鎴風鐨勬祻瑙堝櫒鏄忔槑鐨勶紙鍗充笉闇鎸?鏄庝唬鐞嗘湇鍔″櫒鐨?span lang=EN-US>IP鍜岀鍙o級銆傞忔槑浠g悊鏈嶅姟鍣ㄩ樆鏂綉緇滈氫俊錛屽茍涓旇繃婊ゅ嚭璁塊棶澶栭儴鐨?span lang=EN-US>HTTP錛?span lang=EN-US>80绔彛錛夋祦閲忋傚鏋滃鎴風鐨勮姹傚湪鏈湴鏈夌紦鍐插垯灝嗙紦鍐茬殑鏁版嵁 鐩存帴鍙戠粰鐢ㄦ埛錛屽鏋滃湪鏈湴娌℃湁緙撳啿鍒欏悜榪滅▼web鏈嶅姟鍣ㄥ彂鍑鴻姹傦紝鍏朵綑鎿嶄綔鍜屾爣鍑嗙殑浠g悊鏈嶅姟鍣ㄥ畬鍏ㄧ浉鍚屻傚浜?span lang=EN-US>Linux鎿嶄綔緋葷粺鏉ヨ錛岄忔槑浠g悊浣跨敤 Iptables鎴栬?span lang=EN-US>Ipchains瀹炵幇銆傚洜涓轟笉闇瑕佸嫻忚鍣ㄤ綔浠諱綍璁劇疆錛屾墍浠ワ紝閫忔槑浠g悊瀵逛簬ISP錛?span lang=EN-US>Internet鏈嶅姟鍣ㄦ彁渚涘晢錛夌壒鍒湁鐢ㄣ?span lang=EN-US>
銆銆3錛?鍙嶅悜浠g悊緙撳啿鏈嶅姟鍣?span lang=EN-US>
銆銆鍙嶅悜浠g悊鏄拰鍓嶄袱縐嶄唬鐞嗗畬鍏ㄤ笉鍚岀殑涓縐嶄唬鐞嗘湇鍔°備嬌鐢ㄥ畠鍙互闄嶄綆鍘熷WEB鏈嶅姟鍣ㄧ殑璐熻澆銆傚弽鍚戜唬鐞嗘湇鍔″櫒鎵挎媴浜嗗鍘熷WEB鏈嶅姟鍣ㄧ殑闈欐侀〉闈㈢殑璇鋒眰錛岄槻姝㈠師濮嬫湇鍔″櫒榪囪澆銆傚畠浣嶄簬鏈湴WEB鏈嶅姟鍣ㄥ拰Internet涔嬮棿錛屽鐞嗘墍鏈夊WEB鏈嶅姟鍣ㄧ殑璇鋒眰錛岄樆姝?浜?span lang=EN-US>WEB鏈嶅姟鍣ㄥ拰Internet鐨勭洿鎺ラ氫俊銆傚鏋滀簰鑱旂綉鐢ㄦ埛璇鋒眰鐨勯〉闈㈠湪浠g悊鏈嶅姟鍣ㄤ笂鏈夌紦鍐茬殑璇濓紝浠g悊鏈嶅姟鍣ㄧ洿鎺ュ皢緙撳啿鍐呭鍙戦佺粰鐢ㄦ埛銆傚鏋滄病鏈夌紦鍐插垯鍏堝悜WEB鏈嶅姟鍣ㄥ彂鍑鴻姹傦紝鍙栧洖鏁版嵁錛屾湰鍦扮紦瀛樺悗鍐嶅彂閫佺粰鐢ㄦ埛銆傝繖縐嶆柟寮忛氳繃闄嶄綆浜嗗悜WEB鏈嶅姟鍣ㄧ殑璇鋒眰鏁頒粠鑰岄檷浣庝簡WEB鏈嶅姟鍣ㄧ殑璐熻澆銆?span lang=EN-US>
銆銆涓夛紟鍙嶅悜浠g悊宸ヤ綔鍘熺悊
銆銆鍙嶅悜浠g悊鏈嶅姟鍣ㄤ綅浜庢湰鍦?span lang=EN-US>WEB鏈嶅姟鍣ㄥ拰Internet涔嬮棿,濡備笅鍥炬墍紺猴細
銆銆褰撶敤鎴鋒祻瑙堝櫒鍙戝嚭涓涓?span lang=EN-US>HTTP璇鋒眰鏃訛紝閫氳繃鍩熷悕瑙f瀽灝嗚姹傚畾鍚戝埌鍙嶅悜浠g悊鏈嶅姟鍣紙濡傛灉瑕佸疄鐜板涓?span lang=EN-US>WEB 鏈嶅姟鍣ㄧ殑鍙嶅悜浠g悊錛岄渶瑕佸皢澶氫釜WEB鏈嶅姟鍣ㄧ殑鍩熷悕閮芥寚鍚戝弽鍚戜唬鐞嗘湇鍔″櫒錛夈傜敱鍙嶅悜浠g悊鏈嶅姟鍣ㄥ鐞嗗櫒璇鋒眰銆傚弽鍚戜唬鐞嗕竴鑸彧緙撳瓨鍙紦鍐茬殑鏁版嵁錛堟瘮濡?span lang=EN-US>html緗?欏靛拰鍥劇墖絳夛級錛岃屼竴浜?span lang=EN-US>CGI鑴氭湰紼嬪簭鎴栬?span lang=EN-US>ASP涔嬬被鐨勭▼搴忎笉緙撳瓨銆傚畠鏍規嵁浠?span lang=EN-US>WEB鏈嶅姟鍣ㄨ繑鍥炵殑HTTP澶存爣璁版潵緙撳啿闈欐侀〉闈€傛湁鍥涗釜鏈閲嶈HTTP澶存爣 璁幫細
渚嬪錛氬湪榛樿鎯呭喌涓嬶紝ASP欏甸潰榪斿洖” Cache-control: private.” 錛屾墍浠?span lang=EN-US>ASP欏甸潰鏃朵笉浼氬湪鍙嶅悜浠g悊鏈嶅姟鍣ㄧ紦瀛樼殑
鍙嶅悜浠g悊鏈嶅姟鍣紙Reverse Proxy Server錛変竴鑸緗簬婧愭湇鍔″櫒鐨勫墠绔紝濡傚浘涓墍紺恒傚畠閰嶅鏈夊ぇ瀹歸噺鐨勫唴瀛樺拰楂橀熺鐩橈紝鐢ㄤ簬緙撳瓨瀹㈡埛鐨勮姹傦紝鎵浠ュ弽鍚戜唬鐞嗘湇鍔″櫒鍙堢О涓哄姞閫熸湇鍔″櫒銆?
鍥?span lang=EN-US>:鍙嶅悜浠g悊鏈嶅姟鍣?span lang=EN-US>
瀵逛簬瀹㈡埛閫佽繃鏉ョ殑璇鋒眰錛屽弽鍚戜唬鐞嗘湇鍔″櫒鐨勫伐浣滄柟寮忓涓嬶細
· 浣跨敤鍙嶅悜浠g悊鏈嶅姟鍣ㄥ悗錛屽鎴風閫佽繃鏉ョ殑璇鋒眰浼氶鍏堥佸埌鍙嶅悜浠g悊鏈嶅姟鍣ㄣ?
· 鍙嶅悜浠g悊鏈嶅姟鍣ㄥ厛鏌ヨ嚜宸辯紦瀛樼殑鍐呭錛堝姩鎬佸唴瀹規垨闈欐佸唴瀹癸級銆?
· 濡傛灉瀹㈡埛璇鋒眰鍐呭鍦ㄧ紦瀛樹腑錛屽垯鐩存帴灝嗙粨鏋滃弽棣堢粰瀹㈡埛錛屾嬈¤姹傚畬鎴愩?
· 濡傛灉瀹㈡埛璇鋒眰鍐呭涓嶅湪緙撳瓨涓紝瀹冧細鏍規嵁鍚庨潰鐨勫悇涓?span lang=EN-US>HTTP鏈嶅姟鍣紙鎴栧唴瀹規湇鍔″櫒錛夌殑榪愯鎯呭喌錛屽仛璐熻澆鍧囪 澶勭悊錛屽皢璇鋒眰榪涗竴姝ラ佸埌鏌愪釜http 鏈嶅姟鍣紙鎴栧唴瀹規湇鍔″櫒錛夈?
· 鍚庣鏈嶅姟鍣ㄤ綔澶勭悊鍚庯紝鍙嶉緇撴灉緇欏弽鍚戜唬鐞嗘湇鍔″櫒銆?
· 瀵逛簬鍚庣鏈嶅姟鍣ㄥ弽棣堣繃鏉ョ殑緇撴灉錛屽畠浼氬皢緇撴灉緙撳瓨錛堝姩鎬佸唴瀹規垨闈欐佸唴瀹癸級璧鋒潵錛屽茍榪涗竴姝ラ佺粰瀹㈡埛绔紝姝ゆ璇鋒眰瀹屾垚銆?
鍙嶅悜浠g悊鏈嶅姟鍣ㄩ氬父瑕佷負涓涓姹傚悓鏃剁淮鎶や袱涓細璇濓細涓庡鎴風鐨勪細璇濆拰涓庡悗绔湇鍔″櫒鐨勫璇濄傚拰鏅氱殑浠g悊涓嶅悓錛屽弽鍚戜唬鐞嗘湇鍔″櫒涓鑸彧浠g悊涓鍙版垨鑰呮湁闄愮殑鍑犲彴鏈嶅姟鍣紝瀵逛簬瀹㈡埛鑰岃█錛屽弽鍚戜唬鐞嗘湇鍔″櫒瀵逛簬浠栦滑灝辯浉褰撲簬婧愭湇鍔″櫒錛屽浜庢簮鏈嶅姟鍣ㄨ岃█錛屽弽鍚戜唬鐞嗘湇鍔″櫒閫氬父灝辨槸鍞竴鐨勫鎴鳳紝鍥犱負涓鑸鎴蜂笉鍜屾簮鏈嶅姟鍣ㄧ洿鎺ラ氫俊銆傚吀鍨嬫儏鍐典笅錛屾簮鏈嶅姟鍣ㄥ浜庡鎴鋒垨鑰呭鎴峰浜庢簮鏈嶅姟鍣紝閮芥槸涓嶅彲瑙佺殑銆?span lang=EN-US>
鍙嶅悜浠g悊鏈嶅姟鍣ㄧ殑浣滅敤
浠g悊鏈嶅姟鍣ㄨ搗鐫瀹㈡埛鏈轟腑緇х珯鐨勪綔鐢ㄣ傚畠杞彂璇鋒眰騫舵帴鏀跺搷搴旓紝榪欎嬌瀹冩垚涓洪珮閫熺紦瀛樼粨鏋滀互渚塊噸鐢ㄧ殑鐞嗘兂鍦烘墍銆傝繖綾諱唬鐞嗘湇鍔″櫒縐頒負楂橀熺紦瀛樹唬鐞嗭紝瀹冨叿鏈変互涓嬩綔鐢細
· 鍔犲揩瀵瑰鎴風殑鍝嶅簲鏃墮棿錛屽噺杞誨悗绔簮鏈嶅姟鍣紙鍗沖唴瀹規湇鍔″櫒錛夎礋杞?
浣跨敤鍙嶅悜浠g悊鏈嶅姟鍣ㄥ悗錛岀敱浜庡畠鍏鋒湁澶у閲忕紦瀛橈紝鍙互緙撳瓨澶氫釜闈欐?span lang=EN-US>/鍔ㄦ侀〉闈紝褰撴湁瀹㈡埛璇鋒眰閫佽繃鏉ユ椂錛屽鑳藉鐩存帴鍦ㄧ紦瀛樹腑鎵懼埌璇鋒眰緇撴灉錛屽氨鍙互鐩存帴鍙嶉緇欏鎴鳳紝鑰屼笉鐢ㄥ啀灝嗚姹傞佺粰鍚庣鏈嶅姟鍣ㄣ傝繖鏍峰氨鍔犲揩浜嗗瀹㈡埛鐨勫搷搴旀椂闂達紝鍚屾椂涔熷噺杞諱簡鍚庣婧愭湇鍔″櫒鐨勮礋杞姐?span lang=EN-US>
· 淇濋殰鍚庣婧愭湇鍔″櫒錛堝嵆鍐呭鏈嶅姟鍣級鐨勫畨鍏?
瀵?span lang=EN-US>Internet涓婄殑瀹㈡埛绔岃█錛屽畠鍙兘鎺ヨЕ鍒板弽鍚戜唬鐞嗘湇鍔″櫒錛屽洜姝ゅ弽鍚戜唬鐞嗘湇鍔″櫒灝辨垚涓哄悗绔湇鍔″櫒鐨勫睆闅滐紝淇濋殰浜嗗悗绔湇鍔″櫒鐨勫畨鍏ㄣ?span lang=EN-US>
· 鍑忓皯婧愭湇鍔″櫒錛堝嵆鍐呭鏈嶅姟鍣級鑺傜偣涔嬮棿鍗犵敤鐨勭綉緇滃甫瀹?
浣跨敤鍙嶅悜浠g悊鏈嶅姟鍣ㄥ悗錛屽畠鍏鋒湁鐨勫ぇ瀹歸噺緙撳瓨鍙互鍑忓皯婧愭湇鍔″櫒鐨勭綉緇滈氳閲忋傝繖鏍峰氨鍑忓皯婧愭湇鍔″櫒錛堝嵆鍐呭鏈嶅姟鍣級鑺傜偣涔嬮棿鍗犵敤鐨勭綉緇滃甫瀹姐?span lang=EN-US>
· 瀵規簮鏈嶅姟鍣ㄨ繘琛岃礋杞藉潎琛?span lang=EN-US>(Load Balance)銆?
褰撳悗绔簮鏈嶅姟鍣ㄦ湁澶氫釜鏃訛紝鍙嶅悜浠g悊鏈嶅姟鍣ㄥ彲浠ユ牴鎹悗绔悇涓湇鍔″櫒褰撳墠璐熻澆鎯呭喌錛屽仛璐熻澆鍧囪 澶勭悊錛屾湁閫夋嫨鐨勫皢褰撳墠璇鋒眰閫佺粰鏈絀洪棽鐨勫悗绔湇鍔″櫒銆?/span>
灝辨槸鍦?span lang=EN-US>timeout鏃墮棿鍐呭張鏈夋柊鐨勮繛鎺ヨ繃鏉ワ紝鍚屾椂max浼氳嚜鍔ㄥ噺1錛岀洿鍒頒負0錛屽己鍒舵柇鎺?/span>銆傝涓嬮潰鐨勫洓涓浘錛屾敞鎰忕湅Date鐨勫鹼紙鍓嶅悗鏃墮棿宸兘鏄湪5縐掍箣鍐咃級錛?span lang=EN-US>



浠?/span>HTTP鐨勮搴?/span>
1 瀹㈡埛绔?/span> 鍦?/span>http Request Header涓婂甫涓?/span> Accept-Encoding:gzip,deflate
2鏈嶅姟鍣ㄨ嫢鏄敮鎸?/span>gzip鍘嬬緝鍒欏湪http reponse eader
閮ㄥ垎榪斿洖Content-Encoding: gzip 鎴栬?/span>Content-Type: application/x-gzip
3灝?/span>body閮ㄥ垎鐢?/span>gzip瑙e帇緙?/span> 鍒欏緱鍒扮綉欏靛唴瀹?/span>.
浼犺涓?/span>ie鏈?/span>bug 鍦ㄥ鐞?/span>js css鍘嬬緝鐨勬椂鍊欐湁bug,鎴戜笉鐞嗚В 鎸虹畝鍗曠殑鎬庝箞浼氭湁bug鍛?/span>.
浠?/span>gzip鐨勮搴?/span>
gzip鏄竴縐嶆暟鎹牸寮?/span> 榛樿涓旂洰鍓嶄粎浣跨敤deflate綆楁硶鍘嬬緝data閮ㄥ垎
zlib涔熸槸涓縐嶆暟鎹牸寮?/span>,浣跨敤defalte綆楁硶鍘嬬緝鏁版嵁閮ㄥ垎.
deflate鏄竴縐嶅帇緙╃畻娉?/span>,鏄?/span>huffman緙栫爜鐨勪竴縐嶅姞寮?/span>
zlib鏄竴涓紑婧愬簱, 鎻愪緵deflate鍘嬬緝鍜屽搴旂殑infalte瑙e帇緙?/span>.
涓嶈繃zlib榛樿鐨?/span>deflate infalte榛樿鏄鐞?/span>zlib鏍煎紡鏁版嵁.蹇呴』浣跨敤
deflateInit2(&strm, DEFAULT_COMPRESSION,Z_DEFLATED, DEFAULT_WINDOWSIZE,DEFAULT_MEMLEVEL, Z_DEFAULT_STRATEGY);
鍒濆鍖栨墠鏄鐞?/span>raw deflate data.(榪欎竴鐐瑰湪zlib manul娌℃湁鎻?/span>,鍦?/span>faq涓彁鍒?/span>,鍥版壈浜嗘垜濂戒箙,榪樻槸鍚屼簨L甯垜璋冭瘯鍙戠幇)
鑷充簬gzip鏍煎紡瑙f瀽 瀵圭潃RFC鍐欏氨鍙互浜?/span>.
鍙傝RFC 1950 鍏充簬zlib http://www.faqs.org/rfcs/rfc1950.html
RFC 1951 鍏充簬deflate http://www.faqs.org/rfcs/rfc1951.html
RFC 1952 鍏充簬gzip http://www.faqs.org/rfcs/rfc1952.html
nt CGzip::Ungzip(const std::string & inStr , std::string &outStr){
static int nFileCount=0;
nFileCount++;
string strZipFileName="test";
// CConvert::StrToFile(inStr,strZipFileName+CConvert::toString<int>(nFileCount)+"H.gzip"
;
if(inStr.length()<11){
return -1;
}
//process gzip header
unsigned int skipCt = 10;
unsigned int skipZeroCt = 0;
unsigned char ID1 = inStr[0];
unsigned char ID2 = inStr[1];
unsigned char XFL=inStr[8];
bool bFEXTRA = false ;
bool bFNAME = false ;
bool bFCOMMENT = false ;
bool bFHCRC = false ;
unsigned int XLEN = 0;
if( (ID1!=31) && (ID2!=139)){
return -1; //闈?/span>gzip澶撮儴
}
unsigned char CM = inStr[2];
if(CM!=
{
return -1; //鐜板湪閮藉彧澶勭悊 deflate鍘嬬緝鐨?/span>
}
unsigned char FLG = inStr[3];
if( (FLG & GZIP_HEAD_FEXTRA) != 0){
bFEXTRA = true ;
skipCt += 2;
XLEN = inStr[10]+ inStr[11]*256 ;//鎸夌収灝忕瀛楄妭搴忓垪澶勭悊
skipCt += XLEN;
}
if( (FLG & GZIP_HEAD_FNAME) != 0){
bFNAME = true;
skipZeroCt++;
}
if( (FLG & GZIP_HEAD_FCOMMENT) != 0){
bFCOMMENT = true;
skipZeroCt++;
}
size_t passedZeroCt = 0;
size_t iStep = skipCt ;
for( size_t iStep = skipCt ; iStep<inStr.length(); iStep++){
if(passedZeroCt>=skipZeroCt){
break;
}
if(inStr[iStep]==''
{
passedZeroCt++;
}
}
skipCt = iStep ;
if( (FLG & GZIP_HEAD_FHCRC) != 0){
bFHCRC = true;
skipCt+=2 ;
}
string coreStr = inStr.substr(skipCt,inStr.length()-8-skipCt);
return CGzip::Inflate(coreStr,outStr);
}
int CGzip:
ogzip(const std::string & inStr , std::string &outStr){
char pAddHead[10];
unsigned long crc = 0;
// gzip header
static const char deflate_magic[2] = {'37', '\213'};
snprintf(pAddHead, 10,
"%c%c%c%c%c%c%c%c%c%c", deflate_magic[0],
deflate_magic[1], Z_DEFLATED, 0 /* flags */,
0, 0, 0, 0 /* 4 chars for mtime */,
0 /* xflags */, 0xff);
string addHead(pAddHead,10);
//gzip's raw deflate body
if(CGzip:
eflate(inStr,outStr)<0){
return - 1;
}
//gzip trailer
crc = crc32(crc, (const Bytef*)inStr.data(), inStr.length());
char tailBuf[8];
memcpy(tailBuf, &crc, 4);
int isize=inStr.size();
memcpy(tailBuf,&isize,4);
string tailStr(tailBuf , 8 );
outStr = addHead + outStr+tailStr; //
return outStr.length(); //
娑堟伅錛?span lang=EN-US>HTTP鍗忚涓《綰ф暟鎹崟浣嶏紝浣跨敤HTTP鍗忚閫氫俊鐨勬満鍣ㄤ箣闂存潵鍥炲彂閫佺殑鏁版嵁鍖?span lang=EN-US>
瀹炰綋錛氬彧鍑虹幇鍦ㄦ湁娑堟伅浣撶殑娑堟伅涓傚畠鎸夌収瀹炰綋header瀹氫箟鐨勬牸寮忓拰緙栫爜榪涜浼犺緭銆?span lang=EN-US>
鏂規硶錛?span lang=EN-US>
OPTIONS 錛氬鎴風鏌ヨ鏈嶅姟鍣ㄥ涓庢煇URL鍏佽鐨勯氫俊閫夐」
GET 錛氫粠鏈嶅姟鍣ㄨ幏鍙?span lang=EN-US>URL瀵瑰簲鐨勮祫婧?span lang=EN-US>
HEAD 錛氶櫎浜嗘湇鍔″櫒鍝嶅簲涓笉鑳藉寘鍚秷鎭綋錛岃鏂規硶涓?span lang=EN-US>GET涓鏍楓傜敤浜庡彧闇灝戞暟鍏冧俊鎭殑鎯呭喌
POST 錛氳璁捐鐢ㄦ潵娉ㄨВ銆佷慨鏀?span lang=EN-US>URL鎵瀵瑰簲鐨勮祫婧?span lang=EN-US>
PUT 錛氳璁捐鐢ㄦ潵淇敼鎴栧垱寤鴻祫婧愩傚綋URL瀵瑰簲鐨勮祫婧愬瓨鍦ㄦ椂錛屽垯鎻愪氦鐨勪綔涓烘柊鐗堟湰錛屽惁鍒欐柊寤鴻祫婧?span lang=EN-US>
DELETE 錛氳璁捐鐢ㄦ潵鍒犻櫎URL瀵瑰簲鐨勮祫婧?span lang=EN-US>
TRACE 錛氫富瑕佺敤鏉ユ祴璇曘傛湇鍔″櫒灝嗘渶緇堟帴鏀跺埌鐨勮姹傛湰韜彂閫佸洖鏉ワ紝浣滀負瀹㈡埛绔瘖鏂緷鎹?span lang=EN-US>
CONNECT 錛氫繚鐣欑殑鏂規硶鍚嶏紝鐢ㄤ簬浠g悊鍒囨崲闅ч亾
header鐗規畩鍙傛暟錛?span lang=EN-US>
q 錛氬湪澶у鐨勫悇縐?span lang=EN-US>header鍊間腑錛岄兘鍙互鐪嬪埌涓涓悕涓?span lang=EN-US>q=0.2銆?span lang=EN-US>q=0.7涔嬬被鐨勫弬鏁般傚洜涓哄彂閫?span lang=EN-US>header涓昏鏄竴涓拰鏈嶅姟鍣ㄧ殑鍗忓晢榪囩▼錛屾墍浠ヨ兘鍏佽鐨勯夐」涓鑸笉鍙竴涓紝浣嗗叿浣撳摢涓紭鍏堝憿錛熻繖灝遍渶瑕佷負涓浜涢夐」鍒跺畾鏉冮噸鍊箋?span lang=EN-US>q鍙傛暟鐨勫兼槸涓涓粠0鍒?span lang=EN-US>1鐨勬誕鐐規暟錛岄粯璁ゆ槸1錛屼負0琛ㄧず瀹㈡埛绔棤娉曟帴鏀訛紝灝忔暟鐐瑰悗 涓嶈兘瓚呰繃3浣嶃傚彟澶栵紝header鐨勫涓間箣闂寸敤閫楀彿鍒嗛殧鑰屼笉鏄垎鍙楓傛瘮濡傝繖涓?span lang=EN-US>header錛?span lang=EN-US>Accept:audio/*;q=0.2,audio /basic錛岃繖琛ㄧず瀹㈡埛绔憡璇夋湇鍔″櫒“鎴戞渶鍠滄鐨勬槸涓涓?span lang=EN-US>audio/basic綾誨瀷鐨勯煶棰?span lang=EN-US>(鍥犱負瀹冩病鏈夎緗?span lang=EN-US>q鍙傛暟錛岄粯璁ゆ槸1錛夛紝浣嗗鏋滄病鏈夛紝緇欐垜涓涓換 鎰忕被鍨?span lang=EN-US>(audio/*)鐨勯煶棰戜篃琛?#8221;銆傚綋鐒訛紝榪欏彧鏄?span lang=EN-US>q鍙傛暟涓涓瘮杈冪畝鍗曠殑搴旂敤銆?span lang=EN-US>
甯歌header 錛?span lang=EN-US>
Cache-Control 錛氱敤浜庢寚鍑鴻姹?span lang=EN-US>/鍝嶅簲閾句笂鎵鏈夌紦瀛樺繀欏繪湇浠庣殑鎸囦護錛屽畠蹇呴』鍏鋒湁絀塊忓悇浠g悊鍜岀綉鍏崇殑鑳藉姏銆?span lang=EN-US>HTTP1.0鍙兘涓嶆敮鎸佽header鍜?span lang=EN-US>Pragma錛?span lang=EN-US>no-cache銆?span lang=EN-US>
Connection 錛氬厑璁稿鎴風鎸囧嚭甯屾湜鐗瑰畾榪炴帴鐨勯夐」錛屼笖紱佹鐢變唬鐞嗗湪灝嗘潵鐨勮繛鎺ヤ腑閫氳
Date 錛氳〃紺烘秷鎭彂鐢熺殑鏃ユ湡鍜屾椂闂達紝涓?span lang=EN-US>RFC 822涓殑orig-date璇箟涓鑷?
Pragma 錛氱敤鏉ュ寘鎷疄鐜扮壒瀹氱殑鎸囦護錛屽彲鑳藉簲鐢ㄥ埌璇鋒眰/鍝嶅簲閾句笂鎵鏈夋帴鏀舵柟
Trailer 錛氭寚鍑虹粰鍑虹殑澶撮儴鍩熼泦鍚堝湪浠?span lang=EN-US>chunked transfer-coding緙栫爜鐨勬秷鎭殑灝鵑儴涓瓨鍦?span lang=EN-US>
Transfer-Encoding 錛氭寚鍑哄簲鐢ㄤ粈涔堢被鍨嬬殑杞崲鍒版秷鎭富浣撲笂錛屼笌content-coding涓嶅悓錛岃繖涓嶆槸鎸囧畾瀹炰綋鐨勫睘鎬ц屾槸娑堟伅鐨?span lang=EN-US>
Upgrade 錛氬厑璁稿鎴風鎸囧嚭鍏舵敮鎸佺殑鍏朵粬閫氳鍗忚錛屽垏鎰挎剰浣跨敤涔嬶紝鑻ユ湇鍔″櫒鍙戠幇鍒囨崲鏄彲琛岀殑錛屽繀欏誨湪鍝嶅簲涓洖101
Via 錛氬繀欏葷敱緗戝叧鎴栦唬鐞嗘潵鎸囧嚭璇鋒眰涓殑UA鍜屾湇鍔″櫒銆佷互鍙婂湪鍝嶅簲涓殑鍘熷鏈嶅姟鍣ㄥ拰瀹㈡埛绔殑涓棿鍗忚鍜屾帴鏀舵柟銆傜敤浜庤窡韙秷鎭漿鍙戯紝閬垮厤璇鋒眰寰幆
Warning 錛氱敤鎴鋒惡甯﹀叧浜庢秷鎭殑鐘舵佸拰杞崲鐨勯澶栦俊鎭紝鍙兘涓嶅湪娑堟伅涓弽鏄犮備竴鑸敤浜庤鍛婂簲鐢ㄥ埌娑堟伅瀹炰綋涓婄殑緙撳瓨鎿嶄綔鎴栬漿鎹㈢己灝戣涔夐忔槑搴?span lang=EN-US>
璇鋒眰header錛?span lang=EN-US>
Accept 錛氬鎴風鎸囧嚭鍝嶅簲鍙互鎺ュ彈鐨勫獟浣撶被鍨?span lang=EN-US>
Accept-Charset 錛氬鎴風鎸囧嚭鍝嶅簲鍙互鎺ュ彈鐨勫瓧絎﹂泦
Accept-Encoding 錛氬鎴風鎸囧嚭鍝嶅簲鍙互鎺ュ彈鐨勫瓧絎︾紪鐮?span lang=EN-US>
Accept-Language 錛氬鎴風鎸囧嚭鍏佽鐨勮璦
Authorization 錛氬鎴風鍦ㄥ彈鍒?span lang=EN-US>401鍚庯紝闇瑕佸悜鏈嶅姟鍣ㄦ爣鏄庤韓浠斤紝鍖呮嫭姝?span lang=EN-US>header鍗沖彲
Expect : 瀹㈡埛绔寚鍑鴻姹傜殑鐗規畩鏈嶅姟鍣ㄨ涓恒傝嫢鏈嶅姟鍣ㄦ棤娉曟弧瓚籌紝鍙互榪斿洖417
From :
Host : 瀹㈡埛绔寚鍑鴻璇鋒眰鐨勮祫婧愮殑鍥犵壒緗戜富鏈哄拰绔彛鍙?span lang=EN-US>
If-Match : 鐢ㄤ簬涓庢柟娉曚竴璧蜂嬌鍏舵潯浠跺寲
If-Modified-Since : 鐢ㄤ簬鏂規硶浣垮叾鏉′歡鍖栵紝濡傛灉璇鋒眰鐨勫彉閲忓湪鏈煙鎸囧畾鐨勬椂闂翠粠鏉ヤ笉鏇句慨鏀硅繃錛屽垯瀹炰綋灝嗕笉浼氫粠鏈嶅姟鍣ㄨ繑鍥烇紝鏀逛負304
If-None-Match : 鐢ㄤ簬涓庢柟娉曚竴璧蜂嬌鍏舵潯浠跺寲
If-Range : 鐢ㄤ簬涓庢柟娉曚竴璧蜂嬌鍏舵潯浠跺寲
If-Unmodified-Since : 鐢ㄤ簬涓庢柟娉曚竴璧蜂嬌鍏舵潯浠跺寲錛屽鏋滆姹傜殑璧勬簮鑷?span lang=EN-US>header鍊兼椂闂翠互鏉ユ湭鏀瑰彉錛屽垯鏈嶅姟鍣ㄦ墽琛岃璇鋒眰
Max-Forwards : 鎻愪緵鏌愮鏈哄埗錛?span lang=EN-US>TRACE鍜?span lang=EN-US>OPTIONS鏂規硶鐢ㄦ潵闄愬埗鍙互杞彂緇欎笅涓叆鐣屾湇鍔″櫒浠g悊鎴栫綉鍏崇殑鏁伴噺錛岀浉褰撲簬瀹㈡埛绔窡韙姹傞摼
Proxy-Authorization : 鍏佽瀹㈡埛绔悜浠g悊鏍囪瘑鑷繁錛岃浠g悊闇瑕佽璇?span lang=EN-US>
Range : 瀛楄妭鑼冨洿錛屽彲浠ユ寚瀹氬崟涓疄浣撲腑鍗曚釜瀛楄妭鑼冨洿鎴栬寖鍥撮泦
Referer : 鍏佽鏈嶅姟鍣ㄤ負鎰熷叴瓚g殑璧勬簮銆佹棩蹇椼佷紭鍖栫紦瀛樼瓑鐢熸垚鍚戝悗閾炬帴娓呭崟
TE : 鎸囧嚭鎰挎剰鍦ㄥ搷搴斾腑鎺ュ彈浠諱綍鎵╁睍鐨?span lang=EN-US>transfer-coding
User-Agent : 鍖呭惈鍙戣搗璇鋒眰鐨勭敤鎴蜂唬鐞嗭紙嫻忚鍣ㄥ拰OS錛夌殑淇℃伅
鍝嶅簲header錛?span lang=EN-US>
Accept-Ranges 錛氭湇鍔″櫒鎸囧嚭瀵硅姹傜殑璧勬簮鍙帴鍙楃殑鑼冨洿錛屽彲浠ユ槸瀛楄妭鏁版垨none
Age 錛?span lang=EN-US>HTTP浣跨敤鏀?span lang=EN-US>header鏉ヤ紶杈撲粠緙撳瓨鏈嶅姟鍣ㄨ幏鍙栨椂鐨勫搷搴旀秷鎭殑浼拌騫撮緞錛屾槸緙撳瓨鏈嶅姟鍣ㄤ及璁′粠鍝嶅簲浜х敓鎴栬鍘熷鏈嶅姟鍣ㄩ噸鏂拌瘉瀹炰互鏉ョ殑鎬繪椂闂?span lang=EN-US>
ETag 錛氭彁渚涙墍璇鋒眰鐨勫疄浣撴爣絳劇殑褰撳墠鍊?span lang=EN-US>
Location 錛氱敤鏉ラ噸瀹氬悜鎺ユ敹
鏂瑰埌闈?span lang=EN-US>URI鐨勪綅緗潵瀹屾垚璇鋒眰銆傚浜?span lang=EN-US>201錛?span lang=EN-US>Location鏄敱璇鋒眰鍒涘緩鐨勬柊璧勬簮鐨勬爣璇?span lang=EN-US>
Proxy-Authenticate 錛氳header蹇呴』浣滀負407鍝嶅簲鐨勪竴閮ㄥ垎錛屾寚鍑鴻璇佹柟妗堝拰鍙簲鐢ㄥ埌浠g悊鐨?span lang=EN-US>URI涓婄殑鍙傛暟
Retry-After 錛氳兘涓?span lang=EN-US>503鍝嶅簲涓璧風敤浜庢寚鍑哄笇鏈涜鏈嶅姟瀵瑰鎴風鍙互緇存寔澶氫箙錛?span lang=EN-US>
Server 錛氭寚鍑烘湇鍔″櫒浣跨敤鐨勮蔣浠朵俊鎭?span lang=EN-US>
Vary 錛?span lang=EN-US>
WWW-Authenticate 錛氬繀欏誨寘鎷湪401涓紝鍊艱嚦灝戞湁challenge緇勬垚錛屽畠鎸囧嚭璁よ瘉鏂規鍜屽彲搴旂敤鍒?span lang=EN-US>URI鐨勫弬鏁?span lang=EN-US>
瀹炰綋header錛?span lang=EN-US>
Allow 錛氬鎴風鎸囧嚭瀵?span lang=EN-US>URI鐨勮祫婧愬厑璁哥殑鏂規硶
Content-Encoding : 鐢ㄤ綔瀵?span lang=EN-US>media-type鐨勪慨楗扮錛屽叾鍊煎皢蹇呴』搴旂敤鍒板疄浣?span lang=EN-US>body涓婄殑棰濆鍐呭緙栫爜銆備富瑕佺敤鏉ュ厑璁稿帇緙╄屼笉涓㈠け涓嬪眰濯掍綋綾誨瀷鏍囪瘑
Content-Language : 瀹㈡埛绔寚鍑鴻嚜宸辨墍閫夌殑璇█錛屾寚鍑虹洰鏍囪浼楀鎵灝佽瀹炰綋鐨勮嚜鐒惰璦銆傝繖鍙兘涓庡疄浣?span lang=EN-US>body鍐呮墍鏈夎璦鐩稿悓
Content-Length 錛氭寚鍑哄疄浣?span lang=EN-US>body鎸夊崄榪涘埗鏁扮殑瀛楄妭嫻佺殑灝哄
Content-Location 錛氬鏋滃疄浣撹兘浠庣嫭绔嬩簬璇鋒眰URI鐨勪綅緗闂紝鍒欐湇鍔″櫒鍙互鎻愪緵璇ュ疄浣撹嚜宸辯殑浣嶇疆
Content-MD5 錛氭槸瀹炰綋body鐨?span lang=EN-US>MD5鎽樿錛屼互渚挎彁渚涚鍒扮鐨勫畬鏁存ф鏌?span lang=EN-US>
Content-Range 錛氫笌瀹炰綋body鐨勪竴閮ㄥ垎涓璧峰彂閫侊紝鐢ㄦ潵鎸囧畾璇ラ儴鍒?span lang=EN-US>body搴旂敤鍒板叏閮?span lang=EN-US>body鐨勫摢涓湴鏂?span lang=EN-US>
Content-Type 錛氭寚鍑哄彂閫佺粰鎺ユ敹鏂圭殑瀹炰綋body鐨勫獟浣撶被鍨嬶紝濯掍綋綾誨瀷鍙傝IANA
Expires 錛氭寚鍑哄搷搴旇璁や負榪囨湡鐨勬棩鏈?span lang=EN-US>/鏃墮棿
Last-Modified 錛氭寚鍑哄師濮嬫湇鍔″櫒璁や負璇ュ彉閲忔渶鍚庝慨鏀圭殑鏃ユ湡鍜屾椂闂達紝紜疄鎰忔濆彇鍐充簬鍘熸槸鏈嶅姟鍣ㄧ殑瀹炵幇鍜岃祫婧愮殑灞炴с傚鏂囦歡錛屽彲鑳藉彧鏄枃浠剁郴緇熷唴鏈鍚庝慨鏀規椂闂?
extension-header 錛?span lang=EN-US>
鐘舵佺爜錛?span lang=EN-US>
100 : Continue
101 : Switching Protocols
200 : OK
201 : Created
202 : Accepted
203 : Non-Authoritative Information
204 : No Content
205 : Reset Content
206 : Partial Content
300 : Multiple Choices
301 : Moved Permanently
302 : Found
303 : See Other
304 : Not Modified
305 : Use Proxy
307 : Temporary Redirect
400 : Bad Request
401 : Unauthorized
402 : Payment Required
403 : Forbidden
404 : Not Found
405 : Method Not Allowed
406 : Not Acceptable
407 : Proxy Authentication Required
408 : Request Time-out
409 : Conflict
410 : Gone
411 : Length Required
412 : Precondition Failed
413 : Request Entity Too Large
414 : Request-URI Too Large
415 : Unsupported Media Type
416 : Requested range not satisfiable
417 : Expectation Failed
500 : Internal Server Error
501 : Not Implemented
502 : Bad Gateway
503 : Service Unavailable
504 : Gateway Time-out
505 : HTTP Version not supported
extension-code
鍏抽敭瀛楋細HTTP
瀵瑰簲URL:D:\New HY Code\HY Web Server\Debug\hy web root\Henyep\UploadFile
<form action="/UploadFile" method="post" enctype="multipart/form-data" onSubmit="return validate()">瀵瑰簲URL:D:\UploadFile
HTTP娑堟伅鐢卞鎴風鍒版湇鍔″櫒鐨勮姹傚拰鏈嶅姟鍣ㄥ埌瀹㈡埛绔殑鍝嶅簲緇勬垚銆傝姹傛秷鎭拰鍝嶅簲娑堟伅閮芥槸鐢卞紑濮嬭錛堝浜庤姹傛秷鎭紝寮濮嬭灝辨槸璇鋒眰琛岋紝瀵逛簬鍝嶅簲娑堟伅錛屽紑濮嬭灝辨槸鐘舵佽錛夛紝娑堟伅鎶ュご錛堝彲閫夛級錛岀┖琛岋紙鍙湁CRLF鐨勮錛夛紝娑堟伅姝f枃錛堝彲閫夛級緇勬垚銆?
HTTP娑堟伅鎶ュご鍖呮嫭鏅氭姤澶淬佽姹傛姤澶淬佸搷搴旀姤澶淬佸疄浣撴姤澶淬?br>姣忎竴涓姤澶村煙閮芥槸鐢卞悕瀛?“錛?#8221;+絀烘牸+鍊?緇勬垚錛屾秷鎭姤澶村煙鐨勫悕瀛楁槸澶у皬鍐欐棤鍏崇殑銆?
1銆佹櫘閫氭姤澶?br>鍦ㄦ櫘閫氭姤澶翠腑錛屾湁灝戞暟鎶ュご鍩熺敤浜庢墍鏈夌殑璇鋒眰鍜屽搷搴旀秷鎭紝浣嗗茍涓嶇敤浜庤浼犺緭鐨勫疄浣擄紝鍙敤浜庝紶杈撶殑娑堟伅銆?br>eg錛?br>Cache-Control 鐢ㄤ簬鎸囧畾緙撳瓨鎸囦護錛岀紦瀛樻寚浠ゆ槸鍗曞悜鐨勶紙鍝嶅簲涓嚭鐜扮殑緙撳瓨鎸囦護鍦ㄨ姹備腑鏈繀浼氬嚭鐜幫級錛屼笖鏄嫭绔嬬殑錛堜竴涓秷鎭殑緙撳瓨鎸囦護涓嶄細褰卞搷鍙︿竴涓秷鎭鐞嗙殑緙撳瓨鏈哄埗錛夛紝HTTP1.0浣跨敤鐨勭被浼肩殑鎶ュご鍩熶負Pragma銆?br>璇鋒眰鏃剁殑緙撳瓨鎸囦護鍖呮嫭錛歯o-cache錛堢敤浜庢寚紺鴻姹傛垨鍝嶅簲娑堟伅涓嶈兘緙撳瓨錛夈乶o-store銆乵ax-age銆乵ax-stale銆乵in-fresh銆乷nly-if-cached;
鍝嶅簲鏃剁殑緙撳瓨鎸囦護鍖呮嫭錛歱ublic銆乸rivate銆乶o-cache銆乶o-store銆乶o-transform銆乵ust-revalidate銆乸roxy-revalidate銆乵ax-age銆乻-maxage.
eg錛氫負浜嗘寚紺篒E嫻忚鍣紙瀹㈡埛绔級涓嶈緙撳瓨欏甸潰錛屾湇鍔″櫒绔殑JSP紼嬪簭鍙互緙栧啓濡備笅錛歳esponse.sehHeader("Cache-Control","no-cache");
//response.setHeader("Pragma","no-cache");浣滅敤鐩稿綋浜庝笂榪頒唬鐮侊紝閫氬父涓よ?/鍚堢敤
榪欏彞浠g爜灝嗗湪鍙戦佺殑鍝嶅簲娑堟伅涓緗櫘閫氭姤澶村煙錛欳ache-Control:no-cache
Date鏅氭姤澶村煙琛ㄧず娑堟伅浜х敓鐨勬棩鏈熷拰鏃墮棿
Connection鏅氭姤澶村煙鍏佽鍙戦佹寚瀹氳繛鎺ョ殑閫夐」銆備緥濡傛寚瀹氳繛鎺ユ槸榪炵畫錛屾垨鑰呮寚瀹?#8220;close”閫夐」錛岄氱煡鏈嶅姟鍣紝鍦ㄥ搷搴斿畬鎴愬悗錛屽叧闂繛鎺?
2銆佽姹傛姤澶?br>璇鋒眰鎶ュご鍏佽瀹㈡埛绔悜鏈嶅姟鍣ㄧ浼犻掕姹傜殑闄勫姞淇℃伅浠ュ強瀹㈡埛绔嚜韜殑淇℃伅銆?br>甯哥敤鐨勮姹傛姤澶?br>Accept
Accept璇鋒眰鎶ュご鍩熺敤浜庢寚瀹氬鎴風鎺ュ彈鍝簺綾誨瀷鐨勪俊鎭俥g錛欰ccept錛歩mage/gif錛岃〃鏄庡鎴風甯屾湜鎺ュ彈GIF鍥捐薄鏍煎紡鐨勮祫婧愶紱Accept錛歵ext/html錛岃〃鏄庡鎴風甯屾湜鎺ュ彈html鏂囨湰銆?br>Accept-Charset
Accept-Charset璇鋒眰鎶ュご鍩熺敤浜庢寚瀹氬鎴風鎺ュ彈鐨勫瓧絎﹂泦銆俥g錛欰ccept-Charset:iso-8859-1,gb2312.濡傛灉鍦ㄨ姹傛秷鎭腑娌℃湁璁劇疆榪欎釜鍩燂紝緙虹渷鏄換浣曞瓧絎﹂泦閮藉彲浠ユ帴鍙椼?br>Accept-Encoding
Accept-Encoding璇鋒眰鎶ュご鍩熺被浼間簬Accept錛屼絾鏄畠鏄敤浜庢寚瀹氬彲鎺ュ彈鐨勫唴瀹圭紪鐮併俥g錛欰ccept-Encoding:gzip.deflate.濡傛灉璇鋒眰娑堟伅涓病鏈夎緗繖涓煙鏈嶅姟鍣ㄥ亣瀹氬鎴風瀵瑰悇縐嶅唴瀹圭紪鐮侀兘鍙互鎺ュ彈銆?br>Accept-Language
Accept-Language璇鋒眰鎶ュご鍩熺被浼間簬Accept錛屼絾鏄畠鏄敤浜庢寚瀹氫竴縐嶈嚜鐒惰璦銆俥g錛欰ccept-Language:zh-cn.濡傛灉璇鋒眰娑堟伅涓病鏈夎緗繖涓姤澶村煙錛屾湇鍔″櫒鍋囧畾瀹㈡埛绔鍚勭璇█閮藉彲浠ユ帴鍙椼?br>Authorization
Authorization璇鋒眰鎶ュご鍩熶富瑕佺敤浜庤瘉鏄庡鎴風鏈夋潈鏌ョ湅鏌愪釜璧勬簮銆傚綋嫻忚鍣ㄨ闂竴涓〉闈㈡椂錛屽鏋滄敹鍒版湇鍔″櫒鐨勫搷搴斾唬鐮佷負401錛堟湭鎺堟潈錛夛紝鍙互鍙戦佷竴涓寘鍚獳uthorization璇鋒眰鎶ュご鍩熺殑璇鋒眰錛岃姹傛湇鍔″櫒瀵瑰叾榪涜楠岃瘉銆?br>Host錛堝彂閫佽姹傛椂錛岃鎶ュご鍩熸槸蹇呴渶鐨勶級
Host璇鋒眰鎶ュご鍩熶富瑕佺敤浜庢寚瀹氳璇鋒眰璧勬簮鐨処nternet涓繪満鍜岀鍙e彿錛屽畠閫氬父浠嶩TTP URL涓彁鍙栧嚭鏉ョ殑錛宔g錛?br>鎴戜滑鍦ㄦ祻瑙堝櫒涓緭鍏ワ細http://www.guet.edu.cn/index.html
嫻忚鍣ㄥ彂閫佺殑璇鋒眰娑堟伅涓紝灝變細鍖呭惈Host璇鋒眰鎶ュご鍩燂紝濡備笅錛?br>Host錛歸ww.guet.edu.cn
姝ゅ浣跨敤緙虹渷绔彛鍙?0錛岃嫢鎸囧畾浜嗙鍙e彿錛屽垯鍙樻垚錛欻ost錛歸ww.guet.edu.cn:鎸囧畾绔彛鍙?br>User-Agent
鎴戜滑涓婄綉鐧婚檰璁哄潧鐨勬椂鍊欙紝寰寰浼氱湅鍒頒竴浜涙榪庝俊鎭紝鍏朵腑鍒楀嚭浜嗕綘鐨勬搷浣滅郴緇熺殑鍚嶇О鍜岀増鏈紝浣犳墍浣跨敤鐨勬祻瑙堝櫒鐨勫悕縐板拰鐗堟湰錛岃繖寰寰璁╁緢澶氫漢鎰熷埌寰堢濂囷紝瀹為檯涓婏紝鏈嶅姟鍣ㄥ簲鐢ㄧ▼搴忓氨鏄粠User-Agent榪欎釜璇鋒眰鎶ュご鍩熶腑鑾峰彇鍒拌繖浜涗俊鎭俇ser-Agent璇鋒眰鎶ュご鍩熷厑璁稿鎴風灝嗗畠鐨勬搷浣滅郴緇熴佹祻瑙堝櫒鍜屽叾瀹冨睘鎬у憡璇夋湇鍔″櫒銆備笉榪囷紝榪欎釜鎶ュご鍩熶笉鏄繀闇鐨勶紝濡傛灉鎴戜滑鑷繁緙栧啓涓涓祻瑙堝櫒錛屼笉浣跨敤User-Agent璇鋒眰鎶ュご鍩燂紝閭d箞鏈嶅姟鍣ㄧ灝辨棤娉曞緱鐭ユ垜浠殑淇℃伅浜嗐?br>璇鋒眰鎶ュご涓句緥錛?br>GET /form.html HTTP/1.1 (CRLF)
Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/* (CRLF)
Accept-Language:zh-cn (CRLF)
Accept-Encoding:gzip,deflate (CRLF)
If-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT (CRLF)
If-None-Match:W/"80b1a4c018f3c41:8317" (CRLF)
User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) (CRLF)
Host:www.guet.edu.cn (CRLF)
Connection:Keep-Alive (CRLF)
(CRLF)
3銆佸搷搴旀姤澶?br>鍝嶅簲鎶ュご鍏佽鏈嶅姟鍣ㄤ紶閫掍笉鑳芥斁鍦ㄧ姸鎬佽涓殑闄勫姞鍝嶅簲淇℃伅錛屼互鍙婂叧浜庢湇鍔″櫒鐨勪俊鎭拰瀵筊equest-URI鎵鏍囪瘑鐨勮祫婧愯繘琛屼笅涓姝ヨ闂殑淇℃伅銆?br>甯哥敤鐨勫搷搴旀姤澶?br>Location
Location鍝嶅簲鎶ュご鍩熺敤浜庨噸瀹氬悜鎺ュ彈鑰呭埌涓涓柊鐨勪綅緗侺ocation鍝嶅簲鎶ュご鍩熷父鐢ㄥ湪鏇存崲鍩熷悕鐨勬椂鍊欍?br>Server
Server鍝嶅簲鎶ュご鍩熷寘鍚簡鏈嶅姟鍣ㄧ敤鏉ュ鐞嗚姹傜殑杞歡淇℃伅銆備笌User-Agent璇鋒眰鎶ュご鍩熸槸鐩稿搴旂殑銆備笅闈㈡槸
Server鍝嶅簲鎶ュご鍩熺殑涓涓緥瀛愶細
Server錛欰pache-Coyote/1.1
WWW-Authenticate
WWW-Authenticate鍝嶅簲鎶ュご鍩熷繀欏昏鍖呭惈鍦?01錛堟湭鎺堟潈鐨勶級鍝嶅簲娑堟伅涓紝瀹㈡埛绔敹鍒?01鍝嶅簲娑堟伅鏃跺欙紝騫跺彂閫丄uthorization鎶ュご鍩熻姹傛湇鍔″櫒瀵瑰叾榪涜楠岃瘉鏃訛紝鏈嶅姟绔搷搴旀姤澶村氨鍖呭惈璇ユ姤澶村煙銆?br>eg錛歐WW-Authenticate:Basic realm="Basic Auth Test!" //鍙互鐪嬪嚭鏈嶅姟鍣ㄥ璇鋒眰璧勬簮閲囩敤鐨勬槸鍩烘湰楠岃瘉鏈哄埗銆?br>Content-Disposition灝辨槸褰撶敤鎴鋒兂鎶婅姹傛墍寰楃殑鍐呭瀛樹負涓涓枃浠剁殑鏃跺欐彁渚涗竴涓粯璁ょ殑鏂囦歡鍚嶃傚叿浣撶殑瀹氫箟濡備笅 Content-Disposition: attachment; filename=“filename.xls”
褰撶劧filename鍙傛暟鍙互鍖呭惈璺緞淇℃伅錛屼絾User-Agnet浼氬拷鐣ユ帀榪欎簺淇℃伅錛屽彧浼氭妸璺緞淇℃伅鐨勬渶鍚庝竴閮ㄥ垎鍋氫負鏂囦歡鍚嶃傚綋浣犲湪鍝嶅簲綾誨瀷涓篴pplication/octet- stream鎯呭喌涓嬩嬌鐢ㄤ簡榪欎釜澶翠俊鎭殑璇濓紝閭e氨鎰忓懗鐫浣犱笉鎯崇洿鎺ユ樉紺哄唴瀹癸紝鑰屾槸寮瑰嚭涓涓?#8221;鏂囦歡涓嬭澆”鐨勫璇濇錛屾帴涓嬫潵灝辨槸鐢變綘鏉ュ喅瀹?#8220;鎵撳紑”榪樻槸“淇濆瓨”浜嗐?
4銆佸疄浣撴姤澶?br>璇鋒眰鍜屽搷搴旀秷鎭兘鍙互浼犻佷竴涓疄浣撱備竴涓疄浣撶敱瀹炰綋鎶ュご鍩熷拰瀹炰綋姝f枃緇勬垚錛屼絾騫朵笉鏄瀹炰綋鎶ュご鍩熷拰瀹炰綋姝f枃瑕佸湪涓璧峰彂閫侊紝鍙互鍙彂閫佸疄浣撴姤澶村煙銆傚疄浣撴姤澶村畾涔変簡鍏充簬瀹炰綋姝f枃錛坋g錛氭湁鏃犲疄浣撴鏂囷級鍜岃姹傛墍鏍囪瘑鐨勮祫婧愮殑鍏冧俊鎭?br>甯哥敤鐨勫疄浣撴姤澶?br>Content-Encoding
Content -Encoding瀹炰綋鎶ュご鍩熻鐢ㄤ綔濯掍綋綾誨瀷鐨勪慨楗扮錛屽畠鐨勫兼寚紺轟簡宸茬粡琚簲鐢ㄥ埌瀹炰綋姝f枃鐨勯檮鍔犲唴瀹圭殑緙栫爜錛屽洜鑰岃鑾峰緱Content-Type鎶ュご鍩熶腑鎵寮曠敤鐨勫獟浣撶被鍨嬶紝蹇呴』閲囩敤鐩稿簲鐨勮В鐮佹満鍒躲侰ontent-Encoding榪欐牱鐢ㄤ簬璁板綍鏂囨。鐨勫帇緙╂柟娉曪紝eg錛欳ontent-Encoding錛?gzip
Content-Language
Content-Language瀹炰綋鎶ュご鍩熸弿榪頒簡璧勬簮鎵鐢ㄧ殑鑷劧璇█銆傛病鏈夎緗鍩熷垯璁や負瀹炰綋鍐呭灝嗘彁渚涚粰鎵鏈夌殑璇█闃呰
鑰呫俥g錛欳ontent-Language:da
Content-Length
Content-Length瀹炰綋鎶ュご鍩熺敤浜庢寚鏄庡疄浣撴鏂囩殑闀垮害錛屼互瀛楄妭鏂瑰紡瀛樺偍鐨勫崄榪涘埗鏁板瓧鏉ヨ〃紺恒?br>Content-Type
Content-Type瀹炰綋鎶ュご鍩熺敤璇寚鏄庡彂閫佺粰鎺ユ敹鑰呯殑瀹炰綋姝f枃鐨勫獟浣撶被鍨嬨俥g錛?br>Content-Type:text/html;charset=ISO-8859-1
Content-Type:text/html;charset=GB2312
Last-Modified
Last-Modified瀹炰綋鎶ュご鍩熺敤浜庢寚紺鴻祫婧愮殑鏈鍚庝慨鏀規棩鏈熷拰鏃墮棿銆?br>Expires
Expires 瀹炰綋鎶ュご鍩熺粰鍑哄搷搴旇繃鏈熺殑鏃ユ湡鍜屾椂闂淬備負浜嗚浠g悊鏈嶅姟鍣ㄦ垨嫻忚鍣ㄥ湪涓孌墊椂闂翠互鍚庢洿鏂扮紦瀛樹腑(鍐嶆璁塊棶鏇捐闂繃鐨勯〉闈㈡椂錛岀洿鎺ヤ粠緙撳瓨涓姞杞斤紝緙╃煭鍝嶅簲鏃墮棿鍜岄檷浣庢湇鍔″櫒璐熻澆)鐨勯〉闈紝鎴戜滑鍙互浣跨敤Expires瀹炰綋鎶ュご鍩熸寚瀹氶〉闈㈣繃鏈熺殑鏃墮棿銆俥g錛欵xpires錛歍hu錛?5 Sep 2006 16:23:12 GMT
HTTP1.1鐨勫鎴風鍜岀紦瀛樺繀欏誨皢鍏朵粬闈炴硶鐨勬棩鏈熸牸寮忥紙鍖呮嫭0錛夌湅浣滃凡緇忚繃鏈熴俥g錛氫負浜嗚嫻忚鍣ㄤ笉瑕佺紦瀛橀〉闈紝鎴戜滑涔熷彲浠ュ埄鐢‥xpires瀹炰綋鎶ュご鍩燂紝璁劇疆涓?錛宩sp涓▼搴忓涓嬶細response.setDateHeader("Expires","0");
浣嗗嚒鎼濿EB寮鍙戠殑浜洪兘紱諱笉寮HTTP錛堣秴鏂囨湰浼犺緭鍗忚錛夛紝鑰岃浜嗚ВHTTP錛岄櫎浜咹TML鏈韓浠ュ錛岃繕鏈変竴閮ㄥ垎涓嶅彲蹇借鐨勫氨鏄疕TTP娑堟伅澶淬?br>鍋氳繃Socket緙栫▼鐨勪漢閮界煡閬擄紝褰撴垜浠璁′竴涓氫俊鍗忚鏃訛紝“娑堟伅澶?娑堟伅浣?#8221;鐨勫垎鍓叉柟寮忔槸寰堝父鐢ㄧ殑錛屾秷鎭ご鍛婅瘔瀵規柟榪欎釜娑堟伅鏄共浠涔堢殑錛屾秷鎭綋鍛婅瘔瀵規柟鎬庝箞騫層侶TTP浼犺緭鐨勬秷鎭篃鏄繖鏍瘋瀹氱殑錛屾瘡涓涓狧TTP鍖呴兘鍒嗕負HTTP澶村拰HTTP浣撲袱閮ㄥ垎錛屽悗鑰呮槸鍙夌殑錛岃屽墠鑰呮槸蹇呴』鐨勩傛瘡褰撴垜浠墦寮涓涓綉欏碉紝鍦ㄤ笂闈㈢偣鍑誨彸閿紝閫夋嫨“鏌ョ湅婧愭枃浠?#8221;錛岃繖鏃剁湅鍒扮殑HTML浠g爜灝辨槸HTTP鐨勬秷鎭綋錛岄偅涔堟秷鎭ご鍙堝湪鍝憿錛烮E嫻忚鍣ㄤ笉璁╂垜浠湅鍒拌繖閮ㄥ垎錛屼絾鎴戜滑鍙互 閫氳繃鎴彇鏁版嵁鍖呯瓑鏂規硶鐪嬪埌瀹冦?br>涓嬮潰灝辨潵鐪嬩竴涓畝鍗曠殑渚嬪瓙錛?br>棣栧厛鍒朵綔涓涓潪甯哥畝鍗曠殑緗戦〉錛屽畠鐨勫唴瀹瑰彧鏈変竴琛岋細
<html><body>hello world</body></html>
鎶婂畠鏀懼埌WEB鏈嶅姟鍣ㄤ笂錛屾瘮濡侷IS錛岀劧鍚庣敤IE嫻忚鍣ㄨ姹傝繖涓〉闈紙http://localhost:8080/simple.htm錛夛紝褰撴垜浠姹傝繖涓〉闈㈡椂錛屾祻瑙堝櫒瀹為檯鍋氫簡浠ヤ笅鍥涢」宸ヤ綔錛?br>1 瑙f瀽鎴戜滑杈撳叆鐨勫湴鍧錛屼粠涓垎瑙e嚭鍗忚鍚嶃佷富鏈哄悕銆佺鍙c佸璞¤礬寰勭瓑閮ㄥ垎錛屽浜庢垜浠殑榪欎釜鍦板潃錛岃В鏋愬緱鍒扮殑緇撴灉濡備笅錛?br>鍗忚鍚嶏細http
涓繪満鍚嶏細localhost
绔彛錛?080
瀵硅薄璺緞錛?simple.htm
2 鎶婁互涓婇儴鍒嗙粨鍚堟湰鏈鴻嚜宸辯殑淇℃伅錛屽皝瑁呮垚涓涓狧TTP璇鋒眰鏁版嵁鍖?br>3 浣跨敤TCP鍗忚榪炴帴鍒頒富鏈虹殑鎸囧畾绔彛錛坙ocalhost, 8080錛夛紝騫跺彂閫佸凡灝佽濂界殑鏁版嵁鍖?br>4 絳夊緟鏈嶅姟鍣ㄨ繑鍥炴暟鎹紝騫惰В鏋愯繑鍥炴暟鎹紝鏈鍚庢樉紺哄嚭鏉?br>鐢辨埅鍙栧埌鐨勬暟鎹寘鎴戜滑涓嶉毦鍙戠幇嫻忚鍣ㄧ敓鎴愮殑HTTP鏁版嵁鍖呯殑鍐呭濡備笅錛?br>GET /simple.htm HTTP/1.1<CR>
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*<CR>
Accept-Language: zh-cn<CR>
Accept-Encoding: gzip, deflate<CR>
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)<CR>
Host: localhost:8080<CR>
Connection: Keep-Alive<CR>
<CR>
涓轟簡鏄劇ず娓呮鎴戞妸鎵鏈夌殑鍥炶濺鐨勫湴鏂歸兘鍔犱笂浜?#8220;<CR>”錛屾敞鎰忔渶鍚庤繕鏈変竴涓┖琛屽姞涓涓洖杞︼紝榪欎釜絀鴻姝f槸HTTP瑙勫畾鐨勬秷鎭ご鍜屾秷鎭綋鐨勫垎鐣岀嚎錛岀涓涓┖琛屼互涓嬬殑鍐呭灝辨槸娑堟伅浣擄紝榪欎釜璇鋒眰鏁版嵁鍖呮槸娌℃湁娑堟伅浣撶殑銆?br>娑堟伅鐨勭涓琛?#8220;GET”琛ㄧず鎴戜滑鎵浣跨敤鐨凥TTP鍔ㄤ綔錛屽叾浠栧彲鑳界殑榪樻湁“POST”絳夛紝GET鐨勬秷鎭病鏈夋秷鎭綋錛岃孭OST娑堟伅鏄湁娑堟伅浣撶殑錛屾秷鎭綋鐨勫唴瀹瑰氨鏄POST鐨勬暟鎹傚悗闈?simple.htm灝辨槸鎴戜滑瑕佽姹傜殑瀵硅薄錛屼箣鍚?a name=baidusnap0>HTTP1.1琛ㄧず浣跨敤鐨勬槸HTTP1.1鍗忚銆?br>絎簩琛岃〃紺烘垜浠墍鐢ㄧ殑嫻忚鍣ㄨ兘鎺ュ彈鐨凜ontent-type錛屼笁鍥涗袱琛屽垯鏄璦鍜岀紪鐮佷俊鎭紝絎簲琛屾樉紺哄嚭鏈満鐨勭浉鍏崇郴淇℃伅錛屽寘鎷祻瑙堝櫒綾誨瀷銆佹搷浣滅郴緇熶俊鎭瓑錛屽緢澶氱綉绔欏彲浠ユ樉紺哄嚭浣犳墍浣跨敤鐨勬祻瑙堝櫒鍜屾搷浣滅郴緇熺増鏈紝灝辨槸鍥犱負鍙互浠庤繖閲岃幏鍙栧埌榪欎簺淇℃伅銆?br>絎叚琛岃〃紺烘垜浠墍璇鋒眰鐨勪富鏈哄拰绔彛錛岀涓冭琛ㄧず浣跨敤Keep-Alive鏂瑰紡錛屽嵆鏁版嵁浼犻掑畬騫朵笉绔嬪嵆鍏抽棴榪炴帴銆?br>鏈嶅姟鍣ㄦ帴鏀跺埌榪欐牱鐨勬暟鎹寘浠ュ悗浼氭牴鎹叾鍐呭鍋氱浉搴旂殑澶勭悊錛屼緥濡傛煡鎵炬湁娌℃湁“/simple.htm”榪欎釜瀵硅薄錛屽鏋滄湁錛屾牴鎹湇鍔″櫒鐨勮緗潵鍐沖畾濡備綍澶勭悊錛屽鏋滄槸HTM錛屽垯涓嶉渶瑕佷粈涔堝鏉傜殑澶勭悊錛岀洿鎺ヨ繑鍥炲叾鍐呭鍗沖彲銆備絾鍦ㄧ洿鎺ヨ繑鍥炰箣鍓嶏紝榪橀渶瑕佸姞涓奌TTP娑堟伅澶淬?br>鏈嶅姟鍣ㄥ彂鍥炵殑瀹屾暣HTTP娑堟伅濡備笅錛?br>HTTP/1.1 200 OK<CR>
Server: Microsoft-IIS/5.1<CR>
X-Powered-By: ASP.NET<CR>
Date: Fri, 03 Mar 2006 06:34:03 GMT<CR>
Content-Type: text/html<CR>
Accept-Ranges: bytes<CR>
Last-Modified: Fri, 03 Mar 2006 06:33:18 GMT<CR>
ETag: "5ca4f75b8c3ec61:9ee"<CR>
Content-Length: 37<CR>
<CR>
<html><body>hello world</body></html>
鍚屾牱錛屾垜鐢?#8220;<CR>”鏉ヨ〃紺哄洖杞︺傚彲浠ョ湅鍒幫紝榪欎釜娑堟伅涔熸槸鐢ㄧ┖琛屽垏鍒嗘垚娑堟伅澶村拰娑堟伅浣撲袱閮ㄥ垎錛屾秷鎭綋鐨勯儴鍒嗘鏄垜浠墠闈㈠啓濂界殑HTML浠g爜銆?br>娑堟伅澶寸涓琛?#8220;HTTP/1.1”涔熸槸琛ㄧず鎵浣跨敤鐨勫崗璁紝鍚庨潰鐨?#8220;200 OK”鏄疕TTP榪斿洖浠g爜錛?00灝辮〃紺烘搷浣滄垚鍔燂紝榪樻湁鍏朵粬甯歌鐨勫404琛ㄧず瀵硅薄鏈壘鍒幫紝500琛ㄧず鏈嶅姟鍣ㄩ敊璇紝403琛ㄧず涓嶈兘嫻忚鐩綍絳夌瓑銆?br>絎簩琛岃〃紺鴻繖涓湇鍔″櫒浣跨敤鐨刉EB鏈嶅姟鍣ㄨ蔣浠訛紝榪欓噷鏄疘IS 5.1銆傜涓夎鏄疉SP.Net鐨勪竴涓檮鍔犳彁紺猴紝娌′粈涔堝疄闄呯敤澶勩傜鍥涜鏄鐞嗘璇鋒眰鐨勬椂闂淬傜浜旇灝辨槸鎵榪斿洖鐨勬秷鎭殑content-type錛屾祻瑙堝櫒 浼氭牴鎹畠鏉ュ喅瀹氬浣曞鐞嗘秷鎭綋閲岄潰鐨勫唴瀹癸紝渚嬪榪欓噷鏄痶ext/html錛岄偅涔堟祻瑙堝櫒灝變細鍚敤HTML瑙f瀽鍣ㄦ潵澶勭悊瀹冿紝濡傛灉鏄痠mage/jpeg錛岄偅涔?灝變細浣跨敤JPEG鐨勮В鐮佸櫒鏉ュ鐞嗐?br>娑堟伅澶存渶鍚庝竴琛?#8220;Content-Length”琛ㄧず娑堟伅浣撶殑闀垮害錛屼粠絀鴻浠ュ悗鐨勫唴瀹圭畻璧鳳紝浠ュ瓧鑺備負鍗曚綅錛屾祻瑙堝櫒鎺ユ敹鍒板畠鎵鎸囧畾鐨勫瓧鑺傛暟鐨勫唴瀹逛互鍚庡氨浼氳涓鴻繖涓秷鎭凡緇忚瀹屾暣鎺ユ敹浜嗐?
鐞嗚ВHTTP娑堟伅澶?錛堜簩錛?/strong>
甯歌鐨凥TTP榪斿洖鐮?/strong>
涓婁竴綃囨枃绔犻噷鎴戠畝瑕佺殑璇翠簡璇碒TTP娑堟伅澶寸殑鏍煎紡錛屾敞鎰忓埌鍦ㄦ湇鍔″櫒榪斿洖鐨凥TTP娑堟伅澶撮噷鏈変竴涓?#8220;HTTP/1.1 200 OK”錛岃繖閲岀殑200鏄疕TTP瑙勫畾鐨勮繑鍥炰唬鐮侊紝琛ㄧず璇鋒眰宸茬粡琚甯稿鐞嗗畬鎴愩傛祻瑙堝櫒閫氳繃榪欎釜榪斿洖浠g爜灝卞彲浠ョ煡閬撴湇鍔″櫒瀵規墍鍙戣姹傜殑澶勭悊鎯呭喌鏄粈涔堬紝姣忎竴縐嶈繑鍥炰唬鐮侀兘鏈夎嚜宸辯殑鍚箟銆傝繖閲屽垪涓懼嚑縐嶅父瑙佺殑榪斿洖鐮併?
1 403 Access Forbidden
濡傛灉鎴戜滑璇曞浘璇鋒眰鏈嶅姟鍣ㄤ笂涓涓枃浠跺す錛岃屽湪WEB鏈嶅姟鍣ㄤ笂榪欎釜鏂囦歡澶瑰茍娌℃湁鍏佽瀵硅繖涓枃浠跺す鍒楃洰褰曠殑璇濓紝灝變細榪斿洖榪欎釜浠g爜銆備竴涓畬鏁寸殑403鍥炲鍙兘鏄繖鏍風殑錛氾紙IIS5.1錛?br>HTTP/1.1 403 Access Forbidden <html><head><title>Directory Listing Denied</title></head> 2 404 Object not found
褰撴垜浠姹傜殑瀵硅薄鍦ㄦ湇鍔″櫒涓婂茍涓嶅瓨鍦ㄦ椂錛屽氨浼氱粰鍑鴻繖涓繑鍥炰唬鐮侊紝榪欏彲鑳戒篃鏄渶甯歌鐨勯敊璇唬鐮佷簡銆侷IS緇欏嚭鐨?04娑堟伅鍐呭寰堥暱錛岄櫎浜嗘秷鎭ご浠ュ榪樻湁涓涓畬鏁寸殑璇存槑“涓轟粈涔堜細榪欐牱”鐨勭綉欏點侫PACHE鏈嶅姟鍣ㄧ殑404娑堟伅姣旇緝綆鐭紝濡備笅錛?br>HTTP/1.1 404 Not Found <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 涔熻浣犱細闂紝鏃犺鏄?04榪樻槸200錛岄兘浼氬湪娑堟伅浣撳唴緇欏嚭涓涓鏄庣綉欏碉紝閭d箞瀵逛簬瀹㈡埛绔潵璇翠簩鑰呮湁浠涔堝尯鍒憿錛熶竴涓瘮杈冩槑鏄劇殑鍖哄埆鍦ㄤ簬200鏄?鎴愬姛璇鋒眰錛屾祻瑙堝櫒浼氳褰曚笅榪欎釜鍦板潃錛屼互渚夸笅嬈″啀璁塊棶鏃跺彲浠ヨ嚜鍔ㄦ彁紺鴻鍦板潃錛岃?04鏄け璐ヨ姹傦紝嫻忚鍣ㄥ彧浼氭樉紺哄嚭榪斿洖鐨勯〉闈㈠唴瀹癸紝騫朵笉浼氳褰曟鍦板潃錛岃鍐嶆璁塊棶鏃惰繕闇瑕佽緭鍏ュ畬鏁寸殑鍦板潃銆?
3 401 Access Denied
褰揥EB鏈嶅姟鍣ㄤ笉鍏佽鍖垮悕璁塊棶錛岃屾垜浠張娌℃湁鎻愪緵姝g‘鐨勭敤鎴峰悕/瀵嗙爜鏃訛紝鏈嶅姟鍣ㄥ氨浼氱粰鍑鴻繖涓繑鍥炰唬鐮併傚湪IIS涓紝璁劇疆IIS鐨勫畨鍏ㄥ睘鎬т負涓嶅厑璁稿尶鍚嶈闂紙濡備笅鍥撅級錛屾鏃剁洿鎺ヨ闂殑璇濆氨浼氬緱鍒頒互涓嬭繑鍥炵粨鏋滐細
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 鍥犺繑鍥炰俊鎭腑娑堟伅浣撹緝闀匡紝鍙彇鍓嶉潰涓よ鍐呭銆傛敞鎰忥紝濡傛灉鏄敤localhost鏉ヨ闂湰鏈虹殑IIS錛屽洜IE鍙互鐩存帴鍙栧緱褰撳墠鐢ㄦ埛鐨勮韓浠斤紝瀹冧細鍜屾湇鍔″櫒闂寸洿鎺ヨ繘琛屽崗鍟嗭紝鎵浠ヤ笉浼氱湅鍒?01鎻愮ず銆?br>褰撴垜浠湪杈撳叆浜嗙敤鎴峰悕鍜屽瘑鐮佷互鍚庯紝鏈嶅姟鍣ㄤ笌瀹㈡埛绔細鍐嶈繘琛屼袱嬈″璇濄傞鍏堝鎴風鍚戞湇鍔″櫒绱㈠彇涓涓叕閽ワ紝鏈嶅姟鍣ㄧ浼氳繑鍥炰竴涓叕閽ワ紝浜岃呴兘鐢˙ASE64緙栫爜錛岀浉搴旂殑娑堟伅濡備笅錛堢紪鐮侀儴鍒嗗凡緇忓仛浜嗗鐞嗭級錛?
GET / HTTP/1.1 HTTP/1.1 401 Access Denied <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 榪欐牱錛屽鏋滈獙璇侀氳繃錛屾湇鍔″櫒绔氨浼氭妸璇鋒眰鐨勫唴瀹瑰彂閫佽繃鏉ヤ簡錛屼篃灝辨槸璇寸姝㈠尶鍚嶈闂殑緗戠珯浼氱粡榪囦笁嬈¤姹傛墠鍙互鐪嬪埌欏甸潰銆備絾鍥犱負瀹㈡埛绔祻瑙堝櫒宸茬粡緙撳瓨浜嗗叕閽ワ紝鐢ㄥ悓涓涓祻瑙堝櫒紿楀彛鍐嶆璇鋒眰榪欎釜緗戠珯涓婄殑鍏跺畠欏甸潰鏃跺氨鍙互鐩存帴鍙戦侀獙璇佷俊鎭紝浠庤屼竴嬈′氦浜掑氨鍙互瀹屾垚浜嗐?
4 302 Object Moved
鐢ㄨ繃ASP鐨勪漢閮界煡閬揂SP涓〉闈㈤噸瀹氬悜鑷沖皯鏈塕edirect鍜孴ransfer涓ょ鏂規硶銆備簩鐨勫尯鍒湪浜嶳edirect鏄鎴風閲嶅畾鍚戯紝鑰孴ransfer鏄湇鍔″櫒绔噸瀹氬悜錛岄偅涔堝畠浠叿浣撴槸濡備綍閫氳繃HTTP娑堟伅澶村疄鐜扮殑鍛紵 娉ㄦ剰璇鋒眰鐨勬枃浠剁‘瀹炴槸1.asp錛岃屽緱鍒扮殑鍥炲簲鍒欐槸錛?br>HTTP/1.1 200 OK <p>this is 1.htm</p> <head><title>Object moved</title></head> 娉ㄦ剰HTTP鐨勮繑鍥炰唬鐮佺敱200鍙樻垚浜?02錛岃〃紺鴻繖鏄竴涓噸瀹氬悜娑堟伅錛屽鎴風闇瑕佹牴鎹秷鎭ご涓璍ocation瀛楁鐨勫奸噸鏂板彂閫佽姹傦紝浜庢槸灝辨湁浜嗕笅闈竴緇勫璇濓細 HTTP/1.1 200 OK <p>this is 1.htm</p> 5 500 Internal Server Error
500鍙烽敊璇彂鐢熷湪鏈嶅姟鍣ㄧ▼搴忔湁閿欒鐨勬椂鍊欙紝渚嬪錛孉SP紼嬪簭涓?br><% if %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html dir=ltr> 鏈嶅姟鍣ㄥ彂閫佷簡500鍙烽敊璇紝騫朵笖鍚庨潰閫氳繃HTML鐨勬柟寮忚鏄庝簡閿欒鐨勫師鍥犮?
鐞嗚ВHTTP娑堟伅澶?錛堜笁錛?/strong>
錛堜笁錛?瀹㈡埛绔彂閫佺殑鍐呭 1 HTTP_REFERER 鑰屼互涓嬪艦寮忎笉浼氬彂閫丠TTP_REFERER錛?br>script杞悜錛?lt;script>location.href="b.asp"</script> 2 COOKIE 3 SESSION 4 POST text1=haha -----------------------------7d62bf2f9066c hehe ABCDEFG 鏄劇劧榪欎釜鎻愪氦鐨勪俊鎭姣斿墠榪扮殑澶嶆潅寰堝銆侰ontent-Type鍙樻垚浜?#8220;multipart/form-data”錛屽悗闈㈣繕澶氫簡涓涓?boundary錛屾鍊兼槸涓轟簡鍖哄垎POST鐨勫唴瀹圭殑鍖烘鐢ㄧ殑錛屽彧瑕佸湪鍐呭涓亣鍒頒簡姝ゅ鹼紝灝辮〃紺轟笅闈㈣寮濮嬩竴涓柊鐨勫尯孌典簡錛屾瘡涓尯孌電殑鍐呭鐩稿鐙珛銆傚鏋滈亣 鍒扮殑鏄鍊煎悗闈㈣繛鐫涓や釜鍑忓彿錛屽垯琛ㄧず鍏ㄩ儴鍐呭鍒版緇撴潫銆傛瘡涓涔熷垎涓烘澶村拰孌典綋涓ら儴鍒嗭紝鐢ㄧ┖琛岄殧寮錛屾瘡孌甸兘鏈夎嚜宸辯殑綾誨瀷鍜岀浉鍏充俊鎭傚絎竴鍖烘鏄?text1鐨勫鹼紝瀹冪殑鍚嶇О鏄?#8220;text1”錛屽間負“hehe”銆傜浜屾鏄枃浠跺唴瀹癸紝孌甸閲岃〃鏄庝簡姝ゆ枃浠跺煙鐨勫悕縐?#8220;file1”鍜屾鏂囦歡鍦ㄧ敤鎴風鐩樹笂鐨勪綅緗紝鍚庨潰灝辨槸鏂囦歡鐨勫唴瀹廣?br>濡傛灉鎴戜滑鎯寵鑷繁鍐欎竴涓笂浼犳枃浠剁粍浠舵潵鎺ユ敹HTML琛ㄥ崟浼犻佺殑鏂囦歡鏁版嵁錛岄偅涔堟渶鏍稿績鐨勪換鍔″氨鏄В鏋愭鏁版嵁鍖咃紝浠庝腑鍙栧緱闇瑕佺殑淇℃伅銆?
鐞嗚ВHTTP娑堟伅澶?錛堝洓錛?br>鏈嶅姟鍣ㄨ繑鍥炵殑娑堟伅
鏈嶅姟鍣ㄨ繑鍥炵殑HTTP娑堟伅涔熷垎涓烘秷鎭ご鍜屾秷鎭綋涓ら儴鍒嗐傚墠闈㈣繛杞界殑絎簩綃囬噷宸茬粡浠嬬粛浜嗚繑鍥炴秷鎭腑甯歌榪斿洖浠g爜鐨勫惈涔夈傚浜庨潪姝e父鐨勮繑鍥炰唬鐮佺殑澶勭悊姣旇緝綆鍗曪紝鍙鐓х潃瑕佹眰鍘誨仛灝卞ソ浜嗭紝鑰屽浜庢甯哥殑榪斿洖浠g爜錛?00錛夛紝鍏跺鐞嗘柟寮忓氨澶氱澶氭牱浜嗐?
1 Content-Type
Content-Type鏄繑鍥炴秷鎭腑闈炲父閲嶈鐨勫唴瀹癸紝瀹冩爣璇嗗嚭榪欎釜榪斿洖鍐呭鐨勭被鍨嬶紝鍏跺間負“涓葷被鍨?瀛愮被鍨?#8221;鐨勬牸寮忥紝渚嬪鏈甯歌鐨勫氨鏄?text/html錛屽畠鐨勬剰鎬濇槸璇磋繑鍥炵殑鍐呭鏄枃鏈被鍨嬶紝榪欎釜鏂囨湰鍙堟槸HTML鏍煎紡鐨勩傚師鍒欎笂嫻忚鍣ㄤ細鏍規嵁Content-Type鏉ュ喅瀹氬浣曟樉紺鴻繑鍥炵殑 娑堟伅浣撳唴瀹廣傚父瑙佺殑鍐呭綾誨瀷鏈夛細 2 Content-Disposition
濡傛灉鐢ˋddHeader鐨勬柟娉曞湪HTTP娑堟伅澶翠腑鍔犲叆Content-Disposition孌碉紝騫舵寚瀹氬叾鍊間負“attachment”錛岄偅涔堟棤璁鴻繖涓枃浠舵槸浣曠被鍨嬶紝嫻忚鍣ㄩ兘浼氭彁紺烘垜浠笅杞芥鏂囦歡錛屽洜涓烘鏃跺畠璁や負鍚庨潰鐨勬秷鎭綋鏄竴涓?#8220;闄勪歡”錛屼笉闇瑕佺敱嫻忚鍣ㄦ潵澶勭悊浜嗐備緥濡傦紝鍦ˋSP.Net涓?鍐欏叆濡備笅璇彞錛?br>Response.AddHeader("Content-Disposition: attachment"); 3 Content-Type涓嶤ontent-Disposition
濡傛灉鎶奀ontent-Type鍜孋ontent-Disposition緇撳悎鍦ㄤ竴璧蜂嬌鐢ㄤ細鎬庝箞鏍峰憿錛?br>鎵撳紑涓涓綉欏墊椂錛屾祻瑙堝櫒浼氶鍏堢湅鏄惁鏈塁ontent-Disposition: attachment榪欎竴欏癸紝濡傛灉鏈夛紝鏃犺Content-Type鐨勫兼槸浠涔堬紝閮戒細鎻愮ず鏂囦歡涓嬭澆銆?br>濡傛灉鎸囧畾浜唂ilename錛屽氨浼氭彁紺洪粯璁ょ殑鏂囦歡鍚嶄負姝ゆ枃浠跺悕銆傛敞鎰忓埌鍦↖E6涓櫎浜?#8220;淇濆瓨”鎸夋壄澶栬繕鏈?#8220;鎵撳紑”鎸夋壄錛屾鏃舵墦寮鏂囦歡鐨勭被鍨嬫槸鐢卞湪 filename涓寚瀹氱殑鏂囦歡鎵╁睍鍚嶅喅瀹氱殑錛屼緥濡傝filename=mypic.jpg錛屾祻瑙堝櫒灝變細鏌ユ壘榛樿鐨勫浘鐗囨煡鐪嬪櫒鏉ユ墦寮姝ゆ枃浠躲?br>濡傛灉娌℃湁鎸囧畾filename錛岄偅涔堟祻瑙堝櫒灝辨牴鎹瓹ontent-Type涓殑綾誨瀷鏉ュ喅瀹氭枃浠剁殑綾誨瀷錛屼緥濡侰ontent-Type綾誨瀷涓?image/gif錛岄偅涔堝氨浼氬幓鏌ユ壘榛樿鐨勭湅GIF鍥劇墖鐨勫伐鍏鳳紝騫朵笖璁劇疆姝ゆ枃浠剁殑鍚嶅瓧涓烘墍璇鋒眰鐨勭綉欏電殑涓誨悕錛堜笉甯︽墿灞曞悕錛夊姞涓婂搴斾簬姝ゆ枃浠剁被寮勬墿灞曞悕錛屼緥 濡傝姹傜殑mypage.aspx錛屽氨浼氳嚜鍔ㄥ彉鎴恗ypage.gif銆傚鏋滃茍娌℃湁鎸囧畾Content-Type鍊鹼紝閭d箞灝遍粯璁ゅ畠涓?“text/html”錛屽茍涓斾繚瀛樼殑鏂囦歡鍚嶅氨鏄墍璇鋒眰鐨勭綉欏墊枃浠跺悕銆?br>浣嗗鏋滄病鏈夋寚瀹欳ontent-Disposition錛岄偅涔堝氨鍜屽墠闈㈠叧浜嶤ontent-Type涓墍璁ㄨ鐨勬儏鍐墊槸涓鏍風殑浜嗐?
4 Cache
榪斿洖娑堟伅涓殑Cache鐢ㄤ簬鎸囧畾緗戦〉緙撳瓨銆傛垜浠粡甯稿彲浠ョ湅鍒拌繖鏍風殑鎯呭喌錛屾墦寮涓涓綉欏墊椂閫熷害涓嶅揩錛屼絾鍐嶆鎵撳紑鏃跺氨浼氬揩寰堝錛屽師鍥犳槸嫻忚鍣ㄥ凡緇忓姝ら〉闈㈣繘琛屼簡緙撳瓨錛岄偅涔堝湪鍚屼竴嫻忚鍣ㄧ獥鍙d腑鍐嶆鎵撳紑姝ら〉鏃朵笉浼氶噸鏂頒粠鏈嶅姟鍣ㄧ鑾峰彇銆傜綉欏電殑緙撳瓨鏄敱HTTP娑堟伅澶翠腑鐨?#8220;Cache-control”鏉ユ帶鍒?鐨勶紝甯歌鐨勫彇鍊兼湁private銆乶o-cache銆乵ax-age銆乵ust-revalidate絳夛紝榛樿涓簆rivate銆傚叾浣滅敤鏍規嵁涓嶅悓鐨勯噸鏂版祻 瑙堟柟寮忓垎涓轟互涓嬪嚑縐嶆儏鍐碉細 褰撴寚瀹欳ache-control鍊間負“no-cache”鏃訛紝璁塊棶姝ら〉闈笉浼氬湪Internet涓存椂鏂囩珷澶圭暀涓嬮〉闈㈠浠姐?br>鍙﹀錛岄氳繃鎸囧畾“Expires”鍊間篃浼氬獎鍝嶅埌緙撳瓨銆備緥濡傦紝鎸囧畾Expires鍊間負涓涓棭宸茶繃鍘葷殑鏃墮棿錛岄偅涔堣闂緗戞椂鑻ラ噸澶嶅湪鍦板潃鏍忔寜鍥炶濺錛岄偅涔堟瘡嬈¢兘浼氶噸澶嶈闂細 鍦ˋSP涓紝鍙互閫氳繃Response瀵硅薄鐨凟xpires銆丒xpiresAbsolute灞炴ф帶鍒禘xpires鍊鹼紱閫氳繃Response瀵硅薄鐨凜acheControl灞炴ф帶鍒禖ache-control鐨勫鹼紝渚嬪錛?br>Response.ExpiresAbsolute = #2000-1-1# ' 鎸囧畾緇濆鐨勮繃鏈熸椂闂達紝榪欎釜鏃墮棿鐢ㄧ殑鏄湇鍔″櫒褰撳湴鏃墮棿錛屼細琚嚜鍔ㄨ漿鎹負GMT鏃墮棿
Server: Microsoft-IIS/5.1
Date: Mon, 06 Mar 2006 08:57:39 GMT
Connection: close
Content-Type: text/html
Content-Length: 172
<body><h1>Directory Listing Denied</h1>This Virtual Directory does not allow contents to be listed.</body></html>
Date: Mon, 06 Mar 2006 09:03:14 GMT
Server: Apache/2.0.55 (Unix) PHP/5.0.5
Content-Length: 291
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /notexist was not found on this server.</p>
<hr>
<address>Apache/2.0.55 (Unix) PHP/5.0.5 Server at localhost Port 8080</address>
</body></html>
![]()
HTTP/1.1 401 Access Denied
Server: Microsoft-IIS/5.1
Date: Mon, 06 Mar 2006 09:15:55 GMT
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
Connection: close
Content-Length: 3964
Content-Type: text/html
<html dir=ltr>
……
姝ゆ椂嫻忚鍣ㄤ笂緇欏嚭鐨勬彁紺哄涓嬪浘錛岃鎴戜滑杈撳叆鐢ㄦ埛鍚嶅拰瀵嗙爜錛?
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: 192.168.0.55:8080
Connection: Keep-Alive
Authorization: Negotiate ABCDEFG……
Server: Microsoft-IIS/5.1
Date: Mon, 06 Mar 2006 09:20:53 GMT
WWW-Authenticate: Negotiate HIJKLMN……
Content-Length: 3715
Content-Type: text/html
<html dir=ltr>
……
瀹㈡埛绔嬁鍒板叕閽ヤ箣鍚庝嬌鐢ㄥ叕閽ュ鐢ㄦ埛鍚嶅拰瀵嗙爜榪涜鍔犲瘑鐮侊紝鐒跺悗鎶婂姞瀵嗕互鍚庣殑緇撴灉閲嶆柊鍙戠粰鏈嶅姟鍣細
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: 192.168.0.55:8080
Connection: Keep-Alive
Authorization: Negotiate OPQRST……
鍏堟潵鐪嬩竴涓婽ransfer鐨勪緥瀛愶細
渚嬪ASP鏂囦歡1.asp鍙湁涓琛?br><% Server.Transfer "1.htm" %>
HTML鏂囦歡1.htm涔熷彧鏈変竴琛岋細
<p>this is 1.htm</p>
濡傛灉鎴戜滑浠庢祻瑙堝櫒閲岃姹?.asp錛屽彂閫佺殑璇鋒眰鏄細
GET /1.asp HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: localhost:8080
Connection: Keep-Alive
Cookie: ASPSESSIONIDACCTRTTT=PKKDJOPBAKMAMBNANIPIFDAP
Server: Microsoft-IIS/5.1
Date: Mon, 06 Mar 2006 12:52:44 GMT
X-Powered-By: ASP.NET
Content-Length: 20
Content-Type: text/html
Cache-control: private
涓嶉毦鐪嬪嚭錛岄氳繃Server.Transfer璇彞鏈嶅姟鍣ㄧ宸茬粡鍋氫簡欏甸潰閲嶅畾鍚戯紝鑰屽鎴風瀵規涓鏃犳墍鐭ワ紝琛ㄩ潰涓婄湅涓婂幓寰楀埌鐨勫氨鏄?.asp鐨勭粨鏋溿?br>濡傛灉鎶?.asp鐨勫唴瀹規敼涓猴細
<% Response.Redirect "1.htm" %>
鍐嶆璇鋒眰1.asp錛屽彂閫佺殑璇鋒眰娌℃湁鍙樺寲錛屽緱鍒扮殑鍥炲簲鍗村彉鎴愪簡錛?br>HTTP/1.1 302 Object moved
Server: Microsoft-IIS/5.1
Date: Mon, 06 Mar 2006 12:55:57 GMT
X-Powered-By: ASP.NET
Location: 1.htm
Content-Length: 121
Content-Type: text/html
Cache-control: private
<body><h1>Object Moved</h1>This object may be found <a HREF="">here</a>.</body>
GET /1.htm HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: localhost:8080
Connection: Keep-Alive
If-Modified-Since: Thu, 02 Mar 2006 06:50:13 GMT
If-None-Match: "b224758ec53dc61:9f0"
Cookie: ASPSESSIONIDACCTRTTT=PKKDJOPBAKMAMBNANIPIFDAP
Server: Microsoft-IIS/5.1
X-Powered-By: ASP.NET
Date: Mon, 06 Mar 2006 12:55:57 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Mon, 06 Mar 2006 12:52:32 GMT
ETag: "76d85bd51c41c61:9f0"
Content-Length: 20
寰堟槑鏄撅紝涓ょ閲嶅畾鍚戞柟寮忚櫧鐒剁湅涓婂幓緇撴灉寰堝儚錛屼絾鍦ㄥ疄鐜板師鐞嗕笂鏈夊緢澶х殑涓嶅悓銆?
鏄劇劧榪欎釜紼嬪簭騫朵笉瀹屾暣錛屼簬鏄緱鍒扮殑緇撴灉涓猴細
HTTP/1.1 500 Internal Server Error
Server: Microsoft-IIS/5.1
Date: Mon, 06 Mar 2006 12:58:55 GMT
X-Powered-By: ASP.NET
Content-Length: 4301
Content-Type: text/html
Expires: Mon, 06 Mar 2006 12:58:55 GMT
Set-Cookie: ASPSESSIONIDACCTRTTT=ALKDJOPBPPKNPCNOEPCNOOPD; path=/
Cache-control: private
……
榪欎竴嬈′富瑕佹潵瑙傚療HTTP娑堟伅澶翠腑瀹㈡埛绔殑璇鋒眰錛屼粠涓壘鍒頒竴浜涙湁鎰忔濈殑鍐呭銆?
鍐欎袱涓畝鍗曠殑緗戦〉錛?br>a.htm錛?br><a href=b.htm>to page b</a>
b.htm錛?br>haha
鍐呭寰堢畝鍗曪紝灝辨槸緗戦〉A涓湁涓涓埌B鐨勯摼鎺ャ傛妸瀹冧滑鏀懼埌IIS涓婏紝騫惰闂綉欏礎錛屼粠涓啀鐐瑰嚮鍒癇鐨勯摼鎺ワ紝浜庢槸鐪嬪埌浜咮欏電殑“haha”銆傞偅涔堣繖涓ゆ璇鋒眰鏈変粈涔堜笉鍚屽悧錛熻瀵熷畠浠墍鍙戦佺殑HTTP娑堟伅澶達紝鏈鏄庢樉鐨勫尯鍒氨鏄闂瓸欏墊椂姣旇闂瓵欏墊椂澶氫簡涓琛岋細
Referer: http://localhost/a.htm
榪欎竴琛屽氨琛ㄧず錛岀敤鎴瘋璁塊棶鐨凚欏墊槸浠嶢欏甸摼鎺ヨ繃鏉ョ殑銆?br>鏈嶅姟鍣ㄧ瑕佹兂鍙栧緱榪欎釜鍊間篃鏄緢瀹規槗鐨勶紝浠SP涓轟緥錛屽彧闇瑕佸啓涓鍙?br><% =Request.ServerVariables("HTTP_REFERER") %>
灝卞彲浠ヤ簡銆?br>涓浜涚綉绔欓氳繃HTTP_REFERER鏉ュ仛瀹夊叏楠岃瘉錛屽垽鏂敤鎴鋒槸涓嶆槸浠庡厑璁哥殑欏甸潰閾炬帴鏉ョ殑錛岃屼笉鏄洿鎺ヤ粠嫻忚鍣ㄤ笂鎵揢RL鎴栦粠鍏朵粬欏甸潰閾炬帴榪囨潵錛岃繖鏍峰彲浠?浠庝竴瀹氱▼搴︿笂闃叉緗戦〉琚仛闈炴硶浣跨敤銆備絾浠庝笂榪板師鐞嗘潵鐪嬶紝鎯寵楠楄繃鏈嶅姟鍣ㄤ篃騫朵笉鍥伴毦錛屽彧瑕佹墜宸ユ瀯閫犺緭鍏ョ殑HTTP娑堟伅澶村氨鍙互浜嗭紝鍏朵粬甯哥敤鐨勬墜孌佃繕鏈夐氳繃 HOSTS鏂囦歡浼犲煙鍚嶇瓑銆?br>闄や簡瓚呴摼鎺ヤ互澶栵紝榪樻湁鍏朵粬鍑犵鏂瑰紡浼氬鑷碒TTP_REFERER淇℃伅琚彂閫侊紝濡傦細
鍐呰仈妗嗘灦錛?lt;iframe src=b.asp></iframe>
妗嗘灦闆嗭細<frameset><frame src=b.asp></frameset>
琛ㄥ崟鎻愪氦錛?lt;form action=b.asp><input type=submit></form>
SCRIPT寮曠敤錛?lt;script src=b.asp></script>
CSS寮曠敤錛?lt;link rel=stylesheet type=text/css href=b.asp>
XML鏁版嵁宀涳細<xml src=b.asp></xml>
script寮鏂扮獥鍙o細<script>window.open("b.asp");</script>
META杞悜錛?lt;meta http-equiv="refresh" content="0;URL=b.asp">
寮曞叆鍥劇墖錛?lt;img src=b.asp>
COOKIE鏄ぇ瀹墮兘闈炲父鐔熸倝鐨勪簡錛岄氳繃瀹冨彲浠ュ湪瀹㈡埛绔繚瀛樼敤鎴風姸鎬侊紝鍗充嬌鐢ㄦ埛鍏抽棴嫻忚鍣ㄤ篃鑳界戶緇繚瀛樸傞偅涔堝鎴風涓庢湇鍔″櫒绔槸濡備綍浜ゆ崲COOKIE淇℃伅鐨勫憿錛熸病閿欙紝涔熸槸閫氳繃HTTP娑堟伅澶淬?br>棣栧厛鍐欎竴涓畝鍗曠殑ASP緗戦〉錛?br><%
Dim i
i = Request.Cookies("key")
Response.Write i
Response.Cookies("key") = "haha"
Response.Cookies("key").Expires = #2007-1-1#
%>
絎竴嬈¤闂緗戦〉鏃訛紝灞忓箷涓婁竴鐗囩櫧錛岀浜屾璁塊棶鏃訛紝鍒欎細鏄劇ず鍑?#8220;haha”銆傞氳繃闃呰紼嬪簭涓嶉毦鍙戠幇錛屽睆騫曚笂鏄劇ず鐨勫唴瀹瑰疄闄呬笂鏄疌OOKIE 鐨勫唴瀹癸紝鑰岀涓嬈¤闂椂榪樻病鏈夎緗瓹OOKIE鐨勫鹼紝鎵浠ヤ笉浼氭湁鏄劇ず錛岀浜屾鏄劇ず鐨勬槸絎竴嬈¤緗殑鍊箋傞偅涔堝搴旂殑HTTP娑堟伅澶村簲璇ユ槸浠涔堟牱鐨勫憿錛?br>絎竴嬈¤姹傛椂娌′粈涔堜笉鍚岋紝鐣ヨ繃
絎竴嬈¤繑鍥炴椂娑堟伅鍐呭澶氫簡涓嬮潰榪欎竴琛岋細
Set-Cookie: key=haha; expires=Sun, 31-Dec-2006 16:00:00 GMT; path=/
寰堟槑鏄撅紝key=haha琛ㄧず閿悕涓?#8220;key”鐨凜OOKIE鐨勫間負“haha”錛屽悗闈㈡槸榪欏垯COOKIE鐨勮繃鏈熸椂闂達紝鍥犱負鎴戠敤鐨勪腑鏂囨搷浣滅郴緇熺殑鏃跺尯鏄笢鍏尯錛?007騫?鏈?鏃?鐐瑰搴旂殑GMT鏃墮棿灝辨槸2006騫?2鏈?1鏃?6鐐廣?br>絎簩嬈″啀璁塊棶姝ょ綉欏墊椂錛屽彂閫佺殑鍐呭澶氫簡濡備笅涓琛岋細
Cookie: key=haha
瀹冪殑鍐呭灝辨槸鍒氭墠璁劇殑COOKIE鐨勫唴瀹廣傚彲瑙侊紝瀹㈡埛绔湪浠庢湇鍔″櫒绔緱鍒癈OOKIE鍊間互鍚庡氨淇濆瓨鍦ㄧ‖鐩樹笂錛屽啀嬈¤闂椂灝變細鎶婂畠鍙戦佸埌鏈嶅姟鍣ㄣ傚彂閫佹椂騫舵病鏈夊彂閫佽繃鏈熸椂闂達紝鍥犱負鏈嶅姟鍣ㄥ榪囨湡鏃墮棿騫朵笉鍏沖績錛屽綋COOKIE榪囨湡鍚庢祻瑙堝櫒灝變笉浼氬啀鍙戦佸畠浜嗐?br>濡傛灉浣跨敤IE6.0嫻忚鍣ㄥ茍涓旂鐢–OOKIE鍔熻兘錛屽彲浠ュ彂鐜版湇鍔″櫒绔殑set-cookie榪樻槸鏈夌殑錛屼絾瀹㈡埛绔茍涓嶄細鎺ュ彈瀹冿紝涔熶笉浼氬彂閫佸畠銆傛湁浜涚綉绔欙紝 鐗瑰埆鏄湪綰挎姇紲ㄧ綉绔欓氳繃璁板綍COOKIE闃叉鐢ㄦ埛閲嶅鎶曠エ錛岀牬瑙e緢綆鍗曪紝鍙鐢↖E6嫻忚鍣ㄥ茍紱佺敤COOKIE灝卞彲浠ヤ簡銆備篃鏈夌殑緗戠珯閫氳繃COOKIE鍊間負 鏌愬兼潵鍒ゆ柇鐢ㄦ埛鏄惁鍚堟硶錛岃繖縐嶅垽鏂篃闈炲父瀹規槗閫氳繃鎵嬪伐鏋勯燞TTP娑堟伅澶存潵嬈洪獥錛屽綋鐒剁敤HOSTS鐨勬柟寮忎篃鏄彲浠ユ楠楃殑銆?
HTTP鍗忚鏈韓鏄棤鐘舵佺殑錛屾湇鍔″櫒鍜屽鎴風閮戒笉淇濊瘉鐢ㄦ埛璁塊棶鏈熼棿榪炴帴浼氫竴鐩翠繚鎸侊紝浜嬪疄涓婁繚鎸佽繛鎺ユ槸HTTP1.1鎵嶆湁鐨勬柊鍐呭錛屽綋瀹㈡埛绔彂閫佺殑娑堟伅澶翠腑鏈?#8220;Connection: Keep-Alive” 鏃惰〃紺哄鎴風嫻忚鍣ㄦ敮鎸佷繚鎸佽繛鎺ョ殑宸ヤ綔鏂瑰紡錛屼絾榪欎釜榪炴帴涔熶細鍦ㄤ竴孌墊椂闂存病鏈夎姹傚悗鑷姩鏂紑錛屼互鑺傜渷鏈嶅姟鍣ㄨ祫婧愩備負浜嗗湪鏈嶅姟鍣ㄧ緇存寔鐢ㄦ埛鐘舵侊紝SESSION灝辮鍙戞槑鍑烘潵浜嗭紝鐜板湪鍚勪富嫻佺殑鍔ㄦ佺綉欏靛埗鍋氬伐鍏烽兘鏀寔SESSION錛屼絾鏀寔鐨勬柟寮忎笉瀹屽叏鐩稿悓錛屼互涓嬬殕浠SP涓轟緥銆?br>褰撶敤鎴瘋姹備竴涓狝SP緗戦〉鏃訛紝鍦ㄨ繑鍥炵殑HTTP娑堟伅澶翠腑浼氭湁涓琛岋細
Set-Cookie: ASPSESSIONIDCSQCRTBS=KOIPGIMBCOCBFMOBENDCAKDP; path=/
鏈嶅姟鍣ㄩ氳繃COOKIE鐨勬柟寮忓憡璇夊鎴風浣犵殑SESSIONID鏄灝戯紝鍦ㄨ繖閲屾槸“KOIPGIMBCOCBFMOBENDCAKDP”錛屽茍涓旀湇鍔″櫒涓婁繚 鐣欎簡鍜屾SESSIONID鐩稿叧鐨勬暟鎹紝褰撳悓涓鐢ㄦ埛鍐嶆鍙戦佽姹傛椂錛岃繕浼氭妸榪欎釜COOKIE鍐嶅彂閫佸洖鍘伙紝鏈嶅姟鍣ㄧ鏍規嵁姝D鎵懼埌姝ょ敤鎴風殑鏁版嵁錛屼篃灝卞疄鐜頒簡 鏈嶅姟鍣ㄧ鐢ㄦ埛鐘舵佺殑淇濆瓨銆傛墍浠ユ垜浠敤ASP緙栫▼鏃跺彲浠ヤ嬌鐢?#8220;session("name")=user”榪欐牱鐨勬柟寮忎繚瀛樼敤鎴蜂俊鎭傛敞鎰忔COOKIE鍐呭 閲屽茍娌℃湁榪囨湡鏃墮棿錛岃繖琛ㄧず榪欐槸涓涓綋鍏抽棴嫻忚鍣ㄦ椂绔嬪嵆榪囨湡鐨凜OOKIE錛屽畠涓嶄細琚繚瀛樺埌紜洏涓娿傝繖縐嶅伐浣滄柟寮忔瘮鍗曠函鐢–OOKIE鐨勬柟寮忚瀹夊叏寰堝錛屽洜 涓哄湪瀹㈡埛绔茍娌℃湁浠涔堣兘璁╂垜浠慨鏀瑰拰嬈洪獥鐨勫鹼紝鍞竴鐨勪俊鎭氨鏄疭ESSIONID錛岃岃繖涓狪D鍦ㄦ祻瑙堝櫒鍏抽棴鏃朵細绔嬪嵆澶辨晥錛岄櫎闈炲埆浜鴻兘鍦ㄤ綘嫻忚緗戠珯鏈熼棿鎴栧叧闂祻瑙堝櫒鍚庡緢鐭椂闂村唴鐭ラ亾姝D鐨勫鹼紝鎵嶈兘鍋氫竴浜涙楠楁椿鍔ㄣ傚洜涓烘湇鍔″櫒绔垽鏂璖ESSION榪囨湡鐨勬柟寮忓茍涓嶆槸鏂紑榪炴帴鎴栧叧闂祻瑙堝櫒錛岃屾槸閫氳繃鐢ㄦ埛鎵嬪伐緇撴潫 SESSION鎴栫瓑寰呰秴鏃訛紝褰撶敤鎴峰叧闂祻瑙堝櫒鍚庣殑涓孌墊椂闂撮噷SESSION榪樻病鏈夎秴鏃訛紝鎵浠ヨ繖鏃跺鏋滅煡閬撲簡鍒氭墠鐨凷ESSIONID錛岃繕鏄彲浠ユ楠楃殑銆傚洜 姝ゆ渶瀹夊叏鐨勫姙娉曡繕鏄湪紱誨紑緗戠珯涔嬪墠鎵嬪伐緇撴潫SESSION錛屽緢澶氱綉绔欓兘鎻愪緵“Logout”鍔熻兘錛屽畠浼氶氳繃璁劇疆SESSION涓殑鍊間負宸查鍑虹姸鎬佹垨璁?SESSION绔嬪嵆榪囨湡浠庤岃搗鍒板畨鍏ㄧ殑鐩殑銆?br>SESSION鍜孋OOKIE鐨勬柟寮忓悇鏈変紭緙虹偣銆係ESSION鐨勪紭鐐規槸姣旇緝瀹夊叏錛屼笉瀹規槗琚楠楋紝緙虹偣鏄繃鏈熸椂闂寸煭錛屽鏋滅敤榪囧湪瓚呰繃榪囨湡鏃墮棿閲屾病鏈夊悜鏈嶅姟鍣ㄥ彂閫佷換浣曚俊鎭紝灝變細琚涓鴻秴榪囪繃鏈熶簡錛汣OOKIE鍒欑浉鍙嶏紝鏍規嵁鏈嶅姟鍣ㄧ璁劇疆鐨勮秴鏃舵椂闂達紝鍙互闀挎椂闂翠繚鐣欎俊鎭紝鍗充嬌鍏蟲満鍐嶅紑鏈轟篃鍙兘淇濈暀鐘舵侊紝鑰屽畨鍏ㄦц嚜鐒跺ぇ鎵撴姌鎵c傚緢澶氱綉绔欓兘鎻愪緵涓ょ楠岃瘉鏂瑰紡鐩哥粨鍚堬紝濡傛灉鐢ㄦ埛涓存椂鐢ㄨ繖鍙扮數鑴戣闂璁塊棶鍒欓渶瑕佽緭鍏ョ敤鎴峰悕鍜屽瘑鐮侊紝涓嶄繚瀛楥OOKIE錛涘鏋滅敤鎴蜂嬌鐢ㄧ殑鏄嚜宸辯殑涓漢鐢佃剳錛屽垯鍙互璁╃綉绔欏湪鑷繁紜洏涓婁繚鐣機OOKIE錛屼互鍚庤闂椂灝變笉闇瑕侀噸鏂拌緭鍏ョ敤鎴峰悕鍜屽瘑鐮佷簡銆?
嫻忚鍣ㄨ闂湇鍔″櫒甯哥敤鐨勬柟寮忔湁GET鍜孭OST涓ょ錛孏ET鏂瑰紡鍙彂閫丠TTP娑堟伅澶達紝娌℃湁娑堟伅浣擄紝涔熷氨鏄櫎浜嗚GET鐨勫熀鏈俊鎭箣澶?涓嶅悜鏈嶅姟鍣ㄦ彁渚涘叾浠栦俊鎭紝緗戦〉琛ㄥ崟錛團ROM錛夌殑榛樿鎻愪氦鏂瑰紡灝辨槸鐢℅ET鏂瑰紡錛屽畠浼氭妸鎵鏈夊悜鏈嶅姟鍣ㄦ彁浜ょ殑淇℃伅閮戒綔涓篣RL鍚庨潰鐨勫弬鏁幫紝濡?a.asp?a=1&b=2榪欐牱鐨勬柟寮忋傝屽綋瑕佹彁浜ょ殑鏁版嵁閲忓緢澶э紝鎴栬呮墍鎻愪氦鍐呭涓嶅笇鏈涘埆浜虹洿鎺ョ湅鍒版椂錛屽簲璇ヤ嬌鐢≒OST鏂瑰紡銆侾OST鏂瑰紡鎻愪氦 鐨勬暟鎹槸浣滀負HTTP娑堟伅浣撳瓨鍦ㄧ殑錛屼緥濡傦紝鍐欎竴涓綉欏佃〃鍗曪細
<form method=post>
<input type=text name=text1>
<input type=submit>
</form>
璁塊棶姝ょ綉欏碉紝騫跺湪琛ㄥ崟涓~鍏ヤ竴涓?#8220;haha”錛岀劧鍚庢彁浜わ紝鍙互鐪嬪埌姝ゆ鎻愪氦鎵鍙戦佺殑淇℃伅濡備笅錛?br>POST /form.asp HTTP/1.1
Accept: */*
Referer: http://localhost:8080/form.asp
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: localhost:8080
Content-Length: 10
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: key=haha; ASPSESSIONIDCSQCRTBS=LOIPGIMBLMNOGCOBOMPJBOKP
鍓嶉潰鍏抽敭瀛椾粠“GET”鍙樹負浜?#8220;POST”錛孋ontent-Type鍙樻垚浜?#8220;application/x-www-form- urlencoded”錛屽悗闈㈠唴瀹瑰茍鏃犲ぇ鍙樺寲錛屽彧鏄浜嗕竴琛岋細Content-Length: 10錛岃〃紺烘彁浜ょ殑鍐呭鐨勯暱搴︺傜┖琛屽悗闈㈡槸娑堟伅浣擄紝鍐呭灝辨槸琛ㄥ崟涓墍濉殑鍐呭銆傛敞鎰忔鏃跺彂閫佺殑鍐呭鍙槸“Name=Value”鐨勫艦寮忥紝琛ㄥ崟涓婂叾浠栫殑淇℃伅涓?浼氳鍙戦侊紝鎵浠ユ兂鐩存帴浠庢湇鍔″櫒绔彇寰條ist box涓墍鏈夌殑list item鏄姙涓嶅埌鐨勶紝闄ら潪鍦ㄦ彁浜ゅ墠鐢ㄤ竴孌祍cript鎶婃墍鏈夌殑item鍐呭閮借繛鍦ㄤ竴璧鋒斁鍒頒竴涓殣鍚〃鍗曞煙涓?br>濡傛灉鏄敤琛ㄥ崟涓婁紶鏂囦歡錛屾儏鍐靛氨瑕佸鏉備竴浜涗簡錛岄鍏堟槸琛ㄥ崟澹版槑涓鍔犱笂涓鍙ヨ瘽錛歟nctype='multipart/form-data'錛岃〃紺鴻繖涓〃鍗曞皢鎻愪氦澶氭鏁版嵁錛屽茍鐢℉TML錛歩nput type=file鏉ュ0鏄庝竴涓枃浠舵彁浜ゅ煙銆?br>琛ㄥ崟鍐呭濡備笅錛?br><form method=post enctype='multipart/form-data'>
<input type=text name=text1>
<input type=file name=file1>
<input type=submit>
</form>
鎴戜滑涓簍ext1杈撳叆鏂囧瓧錛歨ehe錛屼負file1閫夋嫨鏂囦歡haha.txt錛屽叾鍐呭涓?#8220;ABCDEFG”錛岀劧鍚庢彁浜ゆ琛ㄥ崟銆傛彁浜ょ殑瀹屽叏淇℃伅涓猴細
POST /form.asp HTTP/1.1
Accept: */*
Referer: http://localhost:8080/form.asp
Accept-Language: zh-cn
Content-Type: multipart/form-data; boundary=---------------------------7d62bf2f9066c
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: localhost:8080
Content-Length: 337
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: key=haha; ASPSESSIONIDCSQCRTBS=LOIPGIMBLMNOGCOBOMPJBOKP
Content-Disposition: form-data; name="text1"
-----------------------------7d62bf2f9066c
Content-Disposition: form-data; name="file1"; filename="H:\Documents and Settings\Administrator\妗岄潰\haha.txt"
Content-Type: text/plain
-----------------------------7d62bf2f9066c--
text/html HTML鏂囨湰
image/jpeg JPG鍥劇墖
image/gif GIF鍥劇墖
application/xml XML鏂囨。
audio/x-mpegurl MP3鏂囦歡鍒楄〃錛屽鏋滃畨瑁呬簡Winamp錛屽垯鍙互鐩存帴鎶婂畠褰撻潰M3U鏂囦歡鏉ユ墦寮
鏇村鐨勫唴瀹圭被鍨嬪彲浠ュ湪娉ㄥ唽琛?#8220;HKCR\MIME\Database\Content Type”涓嬬湅鍒?br>瀵逛簬IE6嫻忚鍣ㄦ潵璇達紝濡傛灉Content-Type涓殑綾誨瀷鍜屽疄闄呯殑娑堟伅浣撶被鍨嬩笉涓鑷達紝閭d箞瀹冧細鏍規嵁鍐呭涓殑綾誨瀷鏉ュ垎鏋愬疄闄呭簲璇ユ槸浠涔堢被鍨嬶紝瀵逛簬JPG銆丟IF絳夊父鐢ㄥ浘鐗囨牸寮忛兘鍙互姝g‘鐨勮瘑鍒嚭鏉ワ紝鑰屼笉綆ontent-Type涓啓鐨勬槸浠涔堛?br>濡傛灉Content-Type涓寚瀹氱殑鏄祻瑙堝櫒鍙互鐩存帴鎵撳紑鐨勭被鍨嬶紝閭d箞嫻忚鍣ㄥ氨浼氱洿鎺ユ墦寮鍏跺唴瀹規樉紺哄嚭鏉ワ紝濡傛灉鏄鍏寵仈鍒板叾瀹冨簲鐢ㄧ▼搴忕殑綾誨瀷錛岃繖鏃跺氨瑕佹煡鎵炬敞鍐岃〃涓叧浜庤繖縐嶇被鍨嬬殑娉ㄥ唽鎯呭喌錛屽鏋滄槸鍏佽鐩存帴鎵撳紑鑰屼笉闇瑕佽闂殑錛屽氨浼氱洿鎺ヨ皟鍑鴻繖涓叧鑱旂殑搴旂敤紼嬪簭鏉ユ墦寮榪欎釜鏂囦歡錛屼絾濡傛灉鏄笉鍏佽鐩存帴鎵撳紑鐨勶紝灝?浼氳闂槸鍚︽墦寮銆傚浜庢病鏈夊叧鑱斿埌浠諱綍搴旂敤紼嬪簭鐨勭被鍨嬶紝IE嫻忚鍣ㄤ笉鐭ラ亾瀹冭濡備綍鎵撳紑錛屾鏃禝E6灝變細鎶婂畠褰撴垚XML鏉ュ皾璇曟墦寮銆?
璇鋒眰姝ら〉闈㈡槸寰楀埌鐨勭粨鏋滃錛?br>HTTP/1.1 200 OK
Server: Microsoft-IIS/5.1
Date: Thu, 23 Mar 2006 07:54:53 GMT
Content-Disposition: attachment
Cache-Control: private
Content-Type: text/html; charset=utf-8
……
涔熷氨鏄錛岄氳繃AddHeader鍑芥暟鍙互涓篐TTP娑堟伅澶村姞鍏ユ垜浠嚜瀹氫箟鐨勫唴瀹廣備嬌鐢ㄨ繖縐嶆柟娉曞彲浠ュ己鍒惰嫻忚鍣ㄦ彁紺轟笅杞芥枃浠訛紝鍗充嬌榪欎釜鏂囦歡鏄垜浠凡鐭ョ殑 綾誨瀷錛屽熀浜庢槸HTML緗戦〉銆傚鏋滄兂瑕佽鐢ㄦ埛涓嬭澆鏃舵彁紺轟竴涓粯璁ょ殑鏂囦歡鍚嶏紝鍙渶瑕佸湪鍓嶉潰涓鍙ヨ瘽鍚庡姞涓?#8220;filename=鏂囦歡鍚?#8221;鍗沖彲銆備緥濡傦細
Response.AddHeader("Content-Disposition: attachment; filename=mypage.htm");
錛?錛?鎵撳紑鏂扮獥鍙?/strong>
濡傛灉鎸囧畾cache-control鐨勫間負private銆乶o-cache銆乵ust-revalidate錛岄偅涔堟墦寮鏂扮獥鍙h闂椂閮戒細閲嶆柊璁塊棶鏈嶅姟鍣ㄣ傝屽鏋滄寚瀹氫簡max-age鍊鹼紝閭d箞鍦ㄦ鍊煎唴鐨勬椂闂撮噷灝變笉浼氶噸鏂拌闂湇鍔″櫒錛屼緥濡傦細
Cache-control: max-age=5
琛ㄧず褰撹闂緗戦〉鍚庣殑5縐掑唴鍐嶆璁塊棶涓嶄細鍘繪湇鍔″櫒
錛?錛?鍦ㄥ湴鍧鏍忓洖杞?/strong>
濡傛灉鍊間負private鎴杕ust-revalidate錛堝拰緗戜笂璇寸殑涓嶄竴鏍鳳級錛屽垯鍙湁絎竴嬈¤闂椂浼氳闂湇鍔″櫒錛屼互鍚庡氨涓嶅啀璁塊棶銆傚鏋滃間負no-cache錛岄偅涔堟瘡嬈¢兘浼氳闂傚鏋滃間負max-age錛屽垯鍦ㄨ繃鏈熶箣鍓嶄笉浼氶噸澶嶈闂?br>錛?錛?鎸夊悗閫鎸夋壄
濡傛灉鍊間負private銆乵ust-revalidate銆乵ax-age錛屽垯涓嶄細閲嶈闂紝鑰屽鏋滀負no-cache錛屽垯姣忔閮介噸澶嶈闂?br>錛?錛?鎸夊埛鏂版寜鎵?br>鏃犺涓轟綍鍊鹼紝閮戒細閲嶅璁塊棶
Expires: Fri, 31 Dec 1999 16:00:00 GMT
Response.Expires = 20 ' 鎸囧畾鐩稿鐨勮繃鏈熸椂闂達紝浠ュ垎閽熶負鍗曚綅錛岃〃紺轟粠褰撳墠鏃墮棿璧瘋繃澶氬皯鍒嗛挓榪囨湡銆?br>Response.CacheControl = "no-cache"
Expires鍊兼槸鍙互閫氳繃鍦↖nternet涓存椂鏂囦歡澶逛腑鏌ョ湅涓存椂鏂囦歡鐨勫睘鎬х湅鍒扮殑錛屽錛?
]]>
2銆丳OST鏄璁捐鐢ㄦ潵鍚戜笂鏀句笢瑗跨殑錛岃孏ET鏄璁捐鐢ㄦ潵浠庢湇鍔″櫒鍙栦笢瑗跨殑錛孏ET涔熻兘澶熷悜鏈嶅姟鍣ㄤ紶閫佽緝灝戠殑鏁版嵁錛岃孏et涔嬫墍浠ヤ篃鑳戒紶閫佹暟鎹?鍙槸鐢ㄦ潵璁捐鍛婅瘔鏈嶅姟鍣?浣犲埌搴曢渶瑕佷粈涔堟牱鐨勬暟鎹?POST鐨勪俊鎭綔涓篐TTP 璇鋒眰鐨勫唴瀹癸紝鑰孏ET鏄湪HTTP 澶撮儴浼犺緭鐨勶紱
3銆丳OST涓嶨ET鍦℉TTP 涓紶閫佺殑鏂瑰紡涓嶅悓錛孏ET鐨勫弬鏁版槸鍦℉TTP 鐨勫ご閮ㄤ紶閫佺殑錛岃孭ost鐨勬暟鎹垯鏄湪HTTP 璇鋒眰鐨勫唴瀹歸噷浼犻?
4銆丳OST浼犺緭鏁版嵁鏃訛紝涓嶉渶瑕佸湪URL涓樉紺哄嚭鏉ワ紝鑰孏ET鏂規硶瑕佸湪URL涓樉紺猴紱
5銆丟ET鏂規硶鐢變簬鍙楀埌URL闀垮害鐨勯檺鍒?鍙兘浼犻掑ぇ綰?024瀛楄妭錛汸OST浼犺緭鐨勬暟鎹噺澶э紝鍙互杈懼埌2M錛岃屾牴鎹井杞柟闈㈢殑璇存硶錛屽井杞鐢?Request.Form() 鍙帴鏀剁殑鏈澶ф暟鎹湁闄愬埗錛孖IS 4 涓負 80 KB 瀛楄妭錛孖IS 5 涓負 100 KB 瀛楄妭錛?
6銆丼OAP鏄緷璧栦簬HTTP POST妯″紡瀹炵幇鐨勶紱
渚嬪瓙錛?
HTTP GET
鍙戦?
GET /DEMOWebServices2.8/Service.asmx/CancelOrder?UserID=string&PWD=string&OrderConfirmation=string HTTP/1.1
Host: api.efxnow.com
鍥炲
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<objPlaceOrderResponse xmlns="https://api.efxnow.com/webservices2.3">
<Success>boolean</Success>
<ErrorDescription>string</ErrorDescription>
<ErrorNumber>int</ErrorNumber>
<CustomerOrderReference>long</CustomerOrderReference>
<OrderConfirmation>string</OrderConfirmation>
<CustomerDealRef>string</CustomerDealRef>
</objPlaceOrderResponse>
HTTP POST
鍙戦?
POST /DEMOWebServices2.8/Service.asmx/CancelOrder HTTP/1.1
Host: api.efxnow.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
UserID=string&PWD=string&OrderConfirmation=string
鍥炲
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<objPlaceOrderResponse xmlns="https://api.efxnow.com/webservices2.3">
<Success>boolean</Success>
<ErrorDescription>string</ErrorDescription>
<ErrorNumber>int</ErrorNumber>
<CustomerOrderReference>long</CustomerOrderReference>
<OrderConfirmation>string</OrderConfirmation>
<CustomerDealRef>string</CustomerDealRef>
</objPlaceOrderResponse>
SOAP 1.2
鍙戦?
POST /DEMOWebServices2.8/Service.asmx HTTP/1.1
Host: api.efxnow.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<CancelOrder xmlns="https://api.efxnow.com/webservices2.3">
<UserID>string</UserID>
<PWD>string</PWD>
<OrderConfirmation>string</OrderConfirmation>
</CancelOrder>
</soap12:Body>
</soap12:Envelope>
鍥炲
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<CancelOrderResponse xmlns="https://api.efxnow.com/webservices2.3">
<CancelOrderResult>
<Success>boolean</Success>
<ErrorDescription>string</ErrorDescription>
<ErrorNumber>int</ErrorNumber>
<CustomerOrderReference>long</CustomerOrderReference>
<OrderConfirmation>string</OrderConfirmation>
<CustomerDealRef>string</CustomerDealRef>
</CancelOrderResult>
</CancelOrderResponse>
</soap12:Body>
</soap12:Envelope>
1. 鐩殑鈥斺擧TTP/0.9-銆塇TTP/1.0-銆塇TTP/1.1
2. 瑕佹眰鈥斺擬UST銆丷EQUIRED銆丼HOULD
3. 鏈鈥斺旇繛鎺?Connection)銆佹秷鎭?Message)銆佽姹?Request)銆佸簲絳?Response)銆佽祫婧?Resource)銆佸疄浣?Entity)銆佽〃紺烘柟娉?Representation)銆佸唴瀹瑰崗鍟?Content Negotiation)銆佸彉閲忥紙Variant)銆佸鎴鋒満錛圕lient錛夈佺敤鎴蜂唬鐞?User agent)銆佹湇鍔″櫒(Server)銆佸師鏈嶅姟鍣紙Origin server)銆佷唬鐞嗘湇鍔″櫒錛?Proxy錛夈佺綉鍏籌紙gateway錛夈侀珮閫熺紦瀛橈紙Cache錛夈佸彲緙撳瓨錛圕acheable錛夈佺洿鎺ワ紙first-hand錛夈佹槑紜粓姝㈡椂闂達紙explicit expiration time錛夈佹帰绱㈢粓姝㈡椂闂達紙heuristic expiration time錛夈佸勾榫勶紙Age錛夈佷繚椴滃鍛斤紙Freshness lifetime錛夈佷繚椴滐紙Fresh錛夈侀檲鏃э紙Stale錛夈佽涔夐忔槑錛坰emantically transparent錛夈佹湁鏁堟у垽鍒櫒錛圴alidator錛夈佸疄浣撴爣璁幫紙entity tag錛夋垨鏈緇堟洿鏀規椂闂達紙Last-Modified time))銆佷笂娓?涓嬫父錛坲pstream/downstream錛夈佸悜鍐?鍚戝錛坕nbound/outbound錛?
4. 鎬諱綋鎿嶄綔鈥斺旇姹?搴旂瓟銆佷腑浠?
浜屻佺鍙鋒儻渚嬩笌涓鑸娉曪紙notational conversions and generic grammar錛?
1. 鎵╁厖BNF鈥斺攏ame = definition,"literal",rule1 | rule2,(rule1 rule2),*rule,[rule],N rule, #rule,; comment, implied *LWS
2. 鍩烘湰瑙勫垯鈥斺擮CTET,CHAR,UPALPHA,LOALPHA,ALPHA,DIGIT,CTL,CR,LF,SP,HT,<">
涓夈佸崗璁弬鏁幫紙protocol parameters錛?
1. HTTP鐗堟湰鈥斺擧TTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
2. 緇熶竴璧勬簮鏍囩ず絎︼紙URI錛夆斺旂粺涓璧勬簮瀹氫綅鍣?URL)鍜岀粺涓璧勬簮鍚嶇О(URN)鐨勭粨鍚堬紝http_URL = "http:" "http://" host [ ":" port ] [ abs_path [ "?" query ]]
3. 鏃ユ湡/鏃墮棿鏍煎紡鈥斺擲un, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123錛?br>Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036錛?br>Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
4. 瀛楃闆嗏斺旀湰鏂囨。涓殑鏈"瀛楃闆?鎸囦竴縐嶇敤涓涓垨鏇村琛ㄦ牸灝嗕竴涓叓瀛楄妭搴忓垪杞崲鎴愪竴涓瓧絎﹀簭鍒楃殑鏂規硶錛?br>charset=token
澶辮釜瀛楃闆?
5. 鍐呭緙栫爜鈥斺斿唴瀹圭紪鐮佷富瑕佺敤鏉ュ厑璁告枃妗e帇緙╋紙淇℃簮緙栫爜錛?br>content-coding= token
娉ㄥ唽琛ㄥ寘鍚笅鍒楁爣璁幫細gzip錛宑ompress錛宒eflate錛宨dentity
6. 浼犺緭緙栫爜鈥斺旂洰鐨勬槸鑳藉紜繚閫氳繃緗戠粶瀹夊叏浼犺緭錛堜俊閬撶紪鐮侊級
transfer-coding = "chunked" | transfer-extension
transfer-extension = token *( ";" parameter )錛?br>鎴愬潡浼犺緭浠g爜
7. 濯掍綋綾誨瀷鈥斺攎edia-type = type "/" subtype *( ";" parameter )
type = token
subtype = token
瑙勮寖鍖栧拰鍘熸枃緙虹渷
澶氶儴鍒嗙被鍨?
8. 浜у搧鏍囪鈥斺攑roduct = token ["/" product-version]
product-version = token
9. 璐ㄩ噺鍊尖斺攓value = ( "0" [ "." 0*3DIGIT ] )| ( "1" [ "." 0*3("0") ] )
10. 璇█鏍囪鈥斺攍anguage-tag = primary-tag *( "-" subtag )
primary-tag = 1*8ALPHA
subtag = 1*8ALPHA
11. 瀹炰綋鏍囪鈥斺攅ntity-tag = [ weak ] opaque-tag
weak = "W/"
opaque-tag = quoted-string
12. 鑼冨洿鍗曚綅鈥斺攔ange-unit = bytes-unit | other-range-unit
bytes-unit = "bytes"
other-range-unit = token
鍥涖?HTTP娑堟伅錛圚TTP message錛?
1. 娑堟伅綾誨瀷鈥斺擧TTP-message = Request | Response ; HTTP/1.1 messages
generic-message = start-line *(message-header CRLF) CRLF [ message-body ]
start-line = Request-Line | Status-Line
2. 娑堟伅澶粹斺擧TTP澶村煙鍖呮嫭甯歌澶?璇鋒眰澶?搴旂瓟澶村拰瀹炰綋澶村煙
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>
3. 娑堟伅浣撯斺攎essage-body = entity-body| <entity-body encoded as per Transfer-Encoding>
4. 娑堟伅鐨勯暱搴︹斺斿喅瀹氬洜绱?
5. 甯歌澶村煙鈥斺攇eneral-header = Cache-Control| Connection| Date| Pragma| Transfer-Encoding
浜斻?璇鋒眰錛坮equest錛?
棣栬鍖呮嫭鍒╃敤璧勬簮鐨勬柟寮?鍖哄垎璧勬簮鐨勬爣璇?浠ュ強鍗忚鐨勭増鏈彿
Request = Request-Line * (( general-header| request-header| entity-header ) CRLF) CRLF [ message-body ]
1. 璇鋒眰琛屸斺擱equest-Line = Method SP Request-URI SP HTTP-Version CRLF
鏂規硶鈥斺旀柟娉曟爣璁版寚鐨勬槸鍦ㄨ姹俇RI鎵鎸囧畾鐨勮祫婧愪笂鎵瀹炵幇鐨勬柟寮?br>Method = "OPTIONS"| "GET"| "POST"| "PUT"| "DELETE"| "TRACE"| "CONNECT"| extension-method
extension-method = token
璇鋒眰URL鈥斺旇姹俇RL鏄竴縐嶅叏鐞冪粺涓鐨勫簲鐢ㄤ簬璧勬簮璇鋒眰鐨勮祫婧愭爣璇嗙
Request-URI = "*" | absoluteURI | abs_path | authority
璇鋒眰琛屼婦渚嬶細GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1
GET /pub/WWW/TheProject.html HTTP/1.1
Host: www.w3.org
2. 璇鋒眰瀹氫箟鐨勮祫婧愨斺斾竴涓狪NTERNET璇鋒眰鎵瀹氫箟鐨勭簿紜祫婧愮敱璇鋒眰URL鍜屼富鏈烘姤澶村煙鎵鍐沖畾
3. 璇鋒眰鎶ュご鍩熲斺攔equest-header = Accept| Accept-Charset| Accept-Encoding| Accept-Language| Authorization| Expect| From| Host| If-Match| If-Modified-Since| If-None-Match| If-Range| If-Unmodified-Since| Max-Forwards| Proxy-Authorization| Range| Referer| TE| User-Agent
鍏?搴旂瓟錛坮esponse錛?
鎺ユ敹鍜岀炕璇戜竴涓姹備俊鎭悗錛屾湇鍔″櫒鍙戝嚭涓涓狧TTP搴旂瓟淇℃伅
Response = Status-Line*(( general-header| response-header| entity-header ) CRLF) CRLF [ message-body ]
1. 鐘舵佽鈥斺擲tatus-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
鐘舵佺爜鈥斺旂姸鎬佺爜鏄瘯鍥劇悊瑙e拰婊¤凍璇鋒眰鐨勪笁浣嶆暟瀛楃殑鏁存暟鐮侊紝1xx,2xx,3xx,4xx,5xx錛?00-銆?05-銆夋墿灞曠爜
2. 搴旂瓟鎶ュご鍩熲斺攔esponse-header = Accept-Ranges| Age| Location| Proxy-Authenticate| Retry-After| Server| Vary| WWW-Authenticate
涓冦?瀹炰綋錛坋ntity錛?
鍦ㄦ湭緇忕壒鍒瀹氱殑鎯呭喌涓嬶紝璇鋒眰涓庡簲絳旂殑娑堟伅涔熷彲浠ヤ紶閫佸疄浣撱?瀹炰綋鍖呮嫭瀹炰綋鎶ュご鍩熶笌瀹炰綋姝f枃錛岃屾湁浜涘簲絳斿彧鍖呮嫭瀹炰綋鎶ュご銆?
1. 瀹炰綋鎶ュご鍩熲斺攅ntity-header = Allow | Content-Encoding| Content-Language| Content-Length | Content-Location| Content-MD5| Content-Range| Content-Type| Expires| Last-Modified| extension-header
extension-header = message-header
2. 瀹炰綋姝f枃鈥斺攅ntity-body = *OCTET
entity-body := Content-Encoding( Content-Type( data ) )
鍏?榪炴帴錛坈onnection錛?
1. 鎸佺畫榪炴帴鈥斺斾紭鐐?br>鎸佺畫榪炴帴鏄換浣旽TTP榪炴帴鐨勭己鐪佹柟寮忥紝鏀寔鎸佺畫榪炴帴鐨勫鎴鋒満鍙互浠ユ祦姘寸嚎鏂瑰紡鍙戦佽姹?br>浠g悊鏈嶅姟鍣?
2. 娑堟伅浼犻掕姹傗斺旀寔緇繛鎺ヤ笌嫻侀噺鎺у埗
鐩戣榪炴帴涓嚭閿欑姸鎬佺殑娑堟伅
100鍙風姸鎬佺殑鐢ㄩ?br>鏈嶅姟鍣ㄨ繃鏃╁叧闂繛鎺ユ椂瀹㈡埛鏈虹殑鍔ㄤ綔
涔濄?鏂規硶瀹氫箟錛坢ethod definitions錛?
1. 瀹夊叏鍜岀瓑騫傛柟娉?br>瀹夊叏鏂規硶鈥斺擥ET鍜孒EAD鏂規硶闄や簡琛ユ晳澶栦笉搴旇鏈夊埆鐨勯噰鍙栨帾鏂界殑鍚箟
絳夊箓鏂規硶鈥斺旀病鏈夊壇浣滅敤鐨勫簭鍒楁槸絳夊箓鐨?
2. OPTIONS鈥斺擮PTIONS鏂規硶浠h〃鍦ㄨ姹俇RI紜畾鐨勮姹?搴旂瓟榪囩▼涓氫俊鏉′歡鏄惁鍙鐨勪俊鎭?
3. GET鈥斺擥ET鏂規硶璇存槑浜嗛噸寤轟俊鎭殑鍐呭鐢辮姹俇RI鏉ョ‘瀹?
4. HEAD鈥斺旈櫎浜嗗簲絳斾腑紱佹榪斿洖娑堟伅姝f枃澶?HEAD鏂規硶涓嶨ET鏂規硶涓鏍?
5. POST鈥斺擯OST鏂規硶瀹炵幇鐨勫疄闄呭姛鑳藉彇鍐充簬鏈嶅姟鍣?
6. PUT鈥斺擯UT鏂規硶瑕佹眰鎵闄勫疄浣撳瓨鍌ㄥ湪鎻愪緵鐨勮姹俇RI涓?
7. DELETE鈥斺擠ELELE鏂規硶瑕佹眰鍘熸湇鍔″櫒閲婃斁璇鋒眰URI鎸囧悜鐨勮祫婧?
8. TRACE鈥斺擳RACE鏂規硶鐢ㄤ簬璋冪敤榪滅▼鐨勫簲鐢ㄥ眰寰幆璇鋒眰娑堟伅
9. CONNECT鈥斺擟ONNECT鏂規硶鐢ㄤ簬鑳藉姩鎬佸緩绔嬭搗闅ч亾鐨勪唬鐞嗘湇鍔″櫒
鍗併?鐘舵佺爜瀹氫箟錛坰tatus code definitions錛?
1. 淇℃伅1XX鈥斺?br>100緇х畫
101杞崲鍗忚
2. 鎴愬姛2XX鈥斺?br>200璇鋒眰鎴愬姛
201鍒涘緩
202鎺ュ彈
203闈炴潈濞佷俊鎭?br>204鏃犲唴瀹?br>205閲嶇疆鍐呭
206灞閮ㄥ唴瀹?
3. 閲嶆柊瀹氬悜3XX鈥斺?br>300澶氭牱閫夋嫨
301姘鎬箙縐誨姩
302鍒涚珛
303瑙傚療鍒殑閮ㄥ垎
304鍙
306(娌℃湁鐢ㄧ殑)
307涓存椂閲嶅彂
4. 瀹㈡埛閿欒4xx鈥斺?br>400鍧忚姹?br>401鏈巿鏉冪殑
402蹇呴渶鐨勬敮浠?br>403紱佺敤
404娌℃湁鎵懼埌
405涓嶈鍏佽鐨勬柟娉?br>406涓嶆帴鍙?br>407浠g悊鏈嶅姟鍣ㄨ璇佹墍蹇呴渶
408璇鋒眰瓚呮椂
409鍐茬獊
410鍋滄
411蹇呴渶鐨勯暱搴?br>412棰勫鐞嗗け璐?br>413璇鋒眰瀹炰綋澶ぇ
414璇鋒眰鐨刄RI榪囬暱
415涓嶈鏀寔鐨勫獟浣撶被鍨?br>416璇鋒眰鑼冨洿涓嶆弧瓚?br>417鏈熸湜澶辮觸
5. 鏈嶅姟鍣ㄩ敊璇?xx鈥斺?br>500鏈嶅姟鍣ㄥ唴閮ㄩ敊璇?br>501涓嶈兘瀹炵幇
502鍧忕綉鍏?br>503闅句互鑾峰緱鐨勬湇鍔?br>504緗戝叧瓚呮椂
505 HTTP鐗堟湰涓嶆敮鎸?
鍗佷竴銆?璁塊棶楠岃瘉錛坅ccess authentication錛夆斺斿彲閫夋嫨
鍗佷簩銆?鍐呭璋堝垽錛坈ontent negotiation錛?
HTTP涓轟簡"鍐呭璋堝垽"鎻愪緵浜嗕竴浜涙満鍒訛紝鍗沖綋鏈夊緢澶氱鍙兘鐨勮〃紺烘椂濡備綍閫夋嫨瀵逛簬涓涓姹傜殑鏈浣崇殑琛ㄧず銆?
1. 鏈嶅姟鍣ㄩ┍鍔ㄨ皥鍒も斺斾竴涓姹傜殑鏈浣寵〃紺虹殑閫夋嫨鐢辨湇鍔″櫒鎻愪緵鐨勮繍綆楁硶鍒欐潵瀹屾垚
2. 浠g悊椹卞姩璋堝垽鈥斺斿浜庝竴涓簲絳旂殑鏈浣寵〃紺烘硶鐨勯夋嫨鏄湪浠g悊浠庡師鏈嶅姟鍣ㄧ鏀跺埌鏈鍒濈殑搴旂瓟鍚庡疄鐜扮殑
3. 閫忔槑璋堝垽鈥斺旈忔槑鐨勫垽鏂槸鏈嶅姟鍣ㄩ┍鍔ㄥ拰浠g悊椹卞姩璋堝垽鐨勭粨鍚堜綋
鍗佷笁銆?HTTP涓殑緙撳瓨錛坈aching in HTTP錛?
HTTP鍏稿瀷搴旂敤浜庤兘閫氳繃閲囩敤緙撳瓨鎶鏈屾彁楂樻ц兘鐨勫垎甯冨紡淇℃伅緋葷粺
1. 緙撳瓨鈥斺?br>緙撳瓨姝g‘鎬?br>璀﹀憡淇℃伅
緙撳瓨鎺у埗鏈哄埗
鐩存帴鐨勭敤鎴蜂唬鐞嗚鍛?br>瑙勫垯鍜岃鍛婄殑渚嬪鎯呭喌
鐢卞鎴鋒帶鍒剁殑琛屼負
2. 榪囨湡妯″瀷鈥斺?br>鏈嶅姟鍣ㄦ寚瀹氭ā鍨?br>鍚彂寮忚繃鏈?br>騫撮緞璁$畻
榪囨湡璁$畻
婢勬竻榪囨湡鍊?br>婢勬竻澶氶噸鍝嶅簲
3. 紜妯″瀷鈥斺斿綋緙撳瓨鍣ㄦ兂瑕佺敤涓涓け鏃舵晥鐨勬潯鐩潵鐩稿簲瀹㈡埛鐨勮姹?浠栭鍏堝繀欏誨悜婧愭湇鍔″櫒媯楠岃繖涓緙撳瓨鏉$洰鏄惁浠嶇劧鍙敤
鏈鍚庝慨鏀規棩鏈?br>鏍囩緙撳瓨紜鍣?br>寮哄急鎺у埗鍣?br>鍏充簬浣曟椂浣跨敤瀹炰綋鏍囩鍜屾渶鍚庝慨鏀規椂闂寸殑瑙勫垯
涓嶇‘璁ゆ潯浠?
4. 鍝嶅簲鐨勭紦瀛樿兘鍔涒斺旈櫎闈炶鏄庣‘闄愬埗,緙撳瓨緋葷粺鍙互灝嗕竴鎴愬姛鐨勫搷搴斾綔涓虹紦瀛樺疄浣撲竴鐩村瓨鍌?
5. 浠庣紦瀛樻瀯閫犲搷搴斺斺?br>绔埌绔拰Hop-by-hop鎶ュご
涓嶅彲鏇存敼鎶ュご
鑱斿悎鎶ュご
鑱斿悎瀛楄妭鑼冨洿
6. 緙撳瓨璋堝垽鍝嶅簲
7. 鍏變韓涓庨潪鍏變韓緙撳瓨
8. 閿欒鍜屼笉瀹屽叏鍝嶅簲緙撳瓨琛屼負
9. GET鍜?HEAD鐨勫壇浣滅敤
10. 鍒鋒柊鎴栧垹闄ゅ悗鐨勬棤鏁堟?
11. 寮哄埗鍐欓氳繃
12. 緙撳瓨鏇挎崲
13. 鍘嗗彶綰綍
鍗佸洓銆?鎶ュご鍩熷畾涔夛紙header field definitions錛?
1. Accept鈥斺擜ccept = "Accept" ":" #( media-range [ accept-params ] )
media-range = ( "*/*"| ( type "/" "*" )| ( type "/" subtype )) *( ";" parameter )
accept-params = ";" "q" "=" qvalue *( accept-extension )
accept-extension = ";" token [ "=" ( token | quoted-string ) ]
渚?錛欰ccept: audio/*; q=0.2, audio/basic
渚?錛欰ccept: text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c
2. Accept-Charset鈥斺擜ccept-Charset = "Accept-Charset" ":" 1#( ( charset | "*" )[ ";" "q" "=" qvalue ] )
渚嬶細Accept-Charset: iso-8859-5, unicode-1-1;q=0.8
3. Accept-Encoding鈥斺擜ccept-Encoding = "Accept-Encoding" ":" 1#( codings [ ";" "q" "=" qvalue ] )
codings = ( content-coding | "*" )
渚嬶細Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0
4. Accept-Language鈥斺擜ccept-Language = "Accept-Language" ":" 1#( language-range [ ";" "q" "=" qvalue ] )
language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )
渚嬶細Accept-Language: da, en-gb;q=0.8, en;q=0.7
5. Accept-Range鈥斺擜ccept-Ranges = "Accept-Ranges" ":" acceptable-ranges
acceptable-ranges = 1#range-unit | "none"
渚嬶細Accept-Ranges: bytes
6. Age鈥斺擜ge = "Age" ":" age-value
age-value = delta-seconds
7. Allow鈥斺擜llow = "Allow" ":" #Method
渚嬶細Allow: GET, HEAD, PUT
8. Authorization鈥斺擜uthorization = "Authorization" ":" credentials
9. Cache-Control鈥斺擟ache-Control = "Cache-Control" ":" 1#cache-directive
cache-directive = cache-request-directive| cache-response-directive
cache-request-directive ="no-cache"| "no-store"| "max-age" "=" delta-seconds| "max-stale" [ "=" delta-seconds ]| "min-fresh" "=" delta-seconds| "no-transform"| "only-if-cached"| cache-extension
cache-response-directive ="public"| "private" [ "=" <"> 1#field-name <"> ]| "no-cache" [ "=" <"> 1#field-name <"> ]| "no-store"| "no-transform"| "must-revalidate"| "proxy-revalidate"| "max-age" "=" delta-seconds| "s-maxage" "=" delta-seconds| cache-extension
cache-extension = token [ "=" ( token | quoted-string ) ]
浠涔堟槸鍙紦瀛樼殑
鍝簺鍙兘琚紦瀛樹繚瀛?br>瀵瑰熀鏈繃鏈熷け鏁堟満鍒剁殑鏀硅繘
緙撳瓨閲嶆柊紜鏈夋晥鍜岄噸杞芥帶鍒?br>涓嶅緱杞崲鐨勬寚浠?br>緙撳瓨鎺у埗鎵╁睍
10. Connection鈥斺擟onnection = "Connection" ":" 1#(connection-token)
connection-token = token
渚嬶細Connection: close
11. Content-Encoding鈥斺擟ontent-Encoding = "Content-Encoding" ":" 1#content-coding
渚嬶細Content-Encoding: gzip
12. Content-Language鈥斺擟ontent-Language = "Content-Language" ":" 1#language-tag
渚嬶細Content-Language: mi, en
13. Content-Length鈥斺擟ontent-Length = "Content-Length" ":" 1*DIGIT
Content-Length: 3495
14. Content-Location鈥斺擟ontent-Location = "Content-Location" ":"( absoluteURI | relativeURI )
15. Content-MD5鈥斺擟ontent-MD5 = "Content-MD5" ":" md5-digest
md5-digest = <base64 of 128 bit MD5 digest as per RFC 1864>
16. Content-Range鈥斺擟ontent-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
渚嬶細The first 500 bytes:bytes 0-499/1234
17. Content-Type鈥斺擟ontent-Type = "Content-Type" ":" media-type
渚嬶細Content-Type: text/html; charset=ISO-8859-4
18. Date鈥斺擠ate = "Date" ":" HTTP-date
渚嬶細Date: Tue, 15 Nov 1994 08:12:31 GMT
娌℃湁鏃墮挓鐨勫師鏈嶅姟鍣ㄧ殑榪愪綔
19. Etag鈥斺擡Tag = "ETag" ":" entity-tag
渚嬶細ETag: W/"xyzzy"
20. Expect鈥斺擡xpect = "Expect" ":" 1#expectation
expectation = "100-continue" | expectation-extension
expectation-extension = token [ "=" ( token | quoted-string )*expect-params ]
expect-params = ";" token [ "=" ( token | quoted-string ) ]
21. Expires鈥斺擡xpires = "Expires" ":" HTTP-date
渚嬶細Expires: Thu, 01 Dec 1994 16:00:00 GMT
22. From鈥斺擣rom = "From" ":" mailbox
渚嬶細From: webmaster@w3.org
23. Host鈥斺擧ost = "Host" ":" host [ ":" port ] ; Section 3.2.2
24. If-Match鈥斺擨f-Match = "If-Match" ":" ( "*" | 1#entity-tag )
渚嬶細If-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
25. If-Modified-Since鈥斺擨f-Modified-Since = "If-Modified-Since" ":" HTTP-date
渚嬶細If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
26. If-None-Match 鈥斺擨f-None-Match = "If-None-Match" ":" ( "*" | 1#entity-tag )
渚嬶細If-None-Match: W/"xyzzy", W/"r2d2xxxx", W/"c3piozzzz"
27. If-Range 鈥斺擨f-Range = "If-Range" ":" ( entity-tag | HTTP-date )
28. If-Unmodified-Since 鈥斺擨f-Unmodified-Since = "If-Unmodified-Since" ":" HTTP-date
渚嬶細If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT
29. Last-Modified 鈥斺擫ast-Modified = "Last-Modified" ":" HTTP-date
渚嬶細Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
30. Location 鈥斺擫ocation = "Location" ":" absoluteURI
Location: http://www.w3.org/pub/WWW/People.html
31. Max-Forwards 鈥斺擬ax-Forwards = "Max-Forwards" ":" 1*DIGIT
32. Pragma 鈥斺擯ragma = "Pragma" ":" 1#pragma-directive
pragma-directive = "no-cache" | extension-pragma
extension-pragma = token [ "=" ( token | quoted-string ) ]
33. Proxy-Authenticate 鈥斺擯roxy-Authenticate = "Proxy-Authenticate" ":" 1#challenge
34. Proxy-Authorization 鈥斺擯roxy-Authorization = "Proxy-Authorization" ":" credentials
35. Range鈥斺斿瓧鑺傝寖鍥?br>鑼冨洿媯绱㈣姹?br>Range = "Range" ":" ranges-specifier
36. Referer鈥斺擱eferer = "Referer" ":" ( absoluteURI | relativeURI )
37. Retry-After 鈥斺擱etry-After = "Retry-After" ":" ( HTTP-date | delta-seconds )
38. Server 鈥斺擲erver = "Server" ":" 1*( product | comment )
39. TE 鈥斺擳E = "TE" ":" #( t-codings )
t-codings = "trailers" | ( transfer-extension [ accept-params ] )
渚嬶細TE: trailers, deflate;q=0.5
40. Trailer 鈥斺擳railer = "Trailer" ":" 1#field-name
41. Transfer-Encoding 鈥斺擳ransfer-Encoding = "Transfer-Encoding" ":" 1#transfer-coding
渚嬶細Transfer-Encoding: chunked
42. Upgrade鈥斺擴pgrade = "Upgrade" ":" 1#product
渚嬶細Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
43. User-Agent 鈥斺擴ser-Agent = "User-Agent" ":" 1*( product | comment )
渚嬶細User-Agent: CERN-LineMode/2.15 libwww/2.17b3
44. Vary 鈥斺擵ary = "Vary" ":" ( "*" | 1#field-name )
45. Via 鈥斺擵ia = "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
渚嬶細Via: 1.0 ricky, 1.1 ethel, 1.1 fred, 1.0 lucy
46. 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
warn-text = quoted-string
warn-date = <"> HTTP-date <">
47. WWW-Authenticate 鈥斺擶WW-Authenticate = "WWW-Authenticate" ":" 1#challenge
鍗佷簲銆?瀹夊叏鑰冭檻錛坰ecurity considerations錛?
涓浜涘緩璁紝浣嗘槸騫朵笉鍖呮嫭鏈緇堣В鍐蟲柟妗?
1. 涓漢淇℃伅
鏈嶅姟鍣ㄦ棩蹇椾俊鎭殑婊ョ敤
鏁忔劅淇℃伅鐨勪紶杈?br>URI涓晱鎰熶俊鎭殑緙栫爜
榪炴帴鍒癆ccept鎶ュご鐨勬満瑕侀棶棰?
2. 鍩轟簬鏂囦歡鍜岃礬寰勫悕縐扮殑鏀誨嚮
3. DNS嬈洪獥
4. Location錛堜綅緗級鎶ュご鍜屾楠?
5. 鍐呭鍊懼悜闂
6. 閴村畾璇佷功鍜岀┖闂茬殑瀹㈡埛鏈?
7. 浠g悊鏈嶅姟鍣ㄥ拰楂橀熺紦瀛?br>瀵逛唬鐞嗘湇鍔″櫒鐨勬嫆緇濇湇鍔℃敾鍑?
鍗佸叚銆?鎰熻阿
鍗佷竷銆?鍙傝冩枃鐚?
鍗佸叓銆?浣滆呭湴鍧
鍗佷節銆?闄勫綍
HTTP浣跨敤鍐呭綾誨瀷錛屾槸鎸嘩eb鏈嶅姟鍣ㄥ悜Web嫻忚鍣ㄨ繑鍥炵殑鏂囦歡閮芥湁涓庝箣鐩稿叧鐨勭被鍨嬨傛墍鏈夎繖浜涚被鍨嬪湪MIME銆Internet閭歡鍗忚涓婃ā鍨嬪寲錛屽嵆Web鏈嶅姟鍣ㄥ憡璇塛eb嫻忚鍣ㄨ鏂囦歡鎵鍏鋒湁鐨勭綾伙紝鏄疕TML鏂囨。銆丟IF鏍煎紡鍥懼儚銆佸0闊蟲枃浠惰繕鏄嫭绔嬬殑搴旂敤紼嬪簭銆傚ぇ澶氭暟Web嫻忚鍣ㄩ兘鎷ユ湁涓緋誨垪鐨勫彲閰嶇疆鐨勮緟鍔╁簲鐢ㄧ▼搴忥紝瀹冧滑鍛婅瘔嫻忚鍣ㄥ簲璇ュ浣曞鐞哤eb鏈嶅姟鍣ㄥ彂閫佽繃鏉ョ殑鍚勭鍐呭綾誨瀷銆?
HTTP閫氫俊鏈哄埗鏄湪涓嬈″畬鏁寸殑HTTP閫氫俊榪囩▼涓紝Web嫻忚鍣ㄤ笌Web鏈嶅姟鍣ㄤ箣闂村皢瀹屾垚涓嬪垪7涓楠わ細
錛?錛?nbsp; 寤虹珛TCP榪炴帴
鍦℉TTP宸ヤ綔寮濮嬩箣鍓嶏紝Web嫻忚鍣ㄩ鍏堣閫氳繃緗戠粶涓嶹eb鏈嶅姟鍣ㄥ緩绔嬭繛鎺ワ紝璇ヨ繛鎺ユ槸閫氳繃TCP鏉ュ畬鎴愮殑錛岃鍗忚涓嶪P鍗忚鍏卞悓鏋勫緩Internet錛屽嵆钁楀悕鐨凾CP/IP鍗忚鏃忥紝鍥犳Internet鍙堣縐頒綔鏄疶CP/IP緗戠粶銆侶TTP鏄瘮TCP鏇撮珮灞傛鐨勫簲鐢ㄥ眰鍗忚錛屾牴鎹鍒欙紝鍙湁浣庡眰鍗忚寤虹珛涔嬪悗鎵嶈兘錛屾墠鑳借繘琛屾洿灞傚崗璁殑榪炴帴錛屽洜姝わ紝棣栧厛瑕佸緩绔婽CP榪炴帴錛屼竴鑸琓CP榪炴帴鐨勭鍙e彿鏄?0
錛?錛?nbsp; Web嫻忚鍣ㄥ悜Web鏈嶅姟鍣ㄥ彂閫佽姹傚懡浠?
涓鏃﹀緩绔嬩簡TCP榪炴帴錛學eb嫻忚鍣ㄥ氨浼氬悜Web鏈嶅姟鍣ㄥ彂閫佽姹傚懡浠?
渚嬪錛欸ET/sample/hello.jsp HTTP/1.1
錛?錛?nbsp; Web嫻忚鍣ㄥ彂閫佽姹傚ご淇℃伅
嫻忚鍣ㄥ彂閫佸叾璇鋒眰鍛戒護涔嬪悗錛岃繕瑕佷互澶翠俊鎭殑褰㈠紡鍚慦eb鏈嶅姟鍣ㄥ彂閫佷竴浜涘埆鐨勪俊鎭紝涔嬪悗嫻忚鍣ㄥ彂閫佷簡涓絀虹櫧琛屾潵閫氱煡鏈嶅姟鍣紝瀹冨凡緇忕粨鏉熶簡璇ュご淇℃伅鐨勫彂閫併?
錛?錛?nbsp; Web鏈嶅姟鍣ㄥ簲絳?
瀹㈡埛鏈哄悜鏈嶅姟鍣ㄥ彂鍑鴻姹傚悗錛屾湇鍔″櫒浼氬鎴鋒満鍥為佸簲絳旓紝
HTTP/1.1 200 OK
搴旂瓟鐨勭涓閮ㄥ垎鏄崗璁殑鐗堟湰鍙峰拰搴旂瓟鐘舵佺爜
錛?錛?nbsp; Web鏈嶅姟鍣ㄥ彂閫佸簲絳斿ご淇℃伅
姝e瀹㈡埛绔細闅忓悓璇鋒眰鍙戦佸叧浜庤嚜韜殑淇℃伅涓鏍鳳紝鏈嶅姟鍣ㄤ篃浼氶殢鍚屽簲絳斿悜鐢ㄦ埛鍙戦佸叧浜庡畠鑷繁鐨勬暟鎹強琚姹傜殑鏂囨。銆?
錛?錛?nbsp; Web鏈嶅姟鍣ㄥ悜嫻忚鍣ㄥ彂閫佹暟鎹?
Web鏈嶅姟鍣ㄥ悜嫻忚鍣ㄥ彂閫佸ご淇℃伅鍚庯紝瀹冧細鍙戦佷竴涓┖鐧借鏉ヨ〃紺哄ご淇℃伅鐨勫彂閫佸埌姝や負緇撴潫錛屾帴鐫錛屽畠灝變互Content-Type搴旂瓟澶翠俊鎭墍鎻忚堪鐨勬牸寮忓彂閫佺敤鎴鋒墍璇鋒眰鐨勫疄闄呮暟鎹?
錛?錛?nbsp; Web鏈嶅姟鍣ㄥ叧闂璗CP榪炴帴
涓鑸儏鍐典笅錛屼竴鏃eb鏈嶅姟鍣ㄥ悜嫻忚鍣ㄥ彂閫佷簡璇鋒眰鏁版嵁錛屽畠灝辮鍏抽棴TCP榪炴帴錛岀劧鍚庡鏋滄祻瑙堝櫒鎴栬呮湇鍔″櫒鍦ㄥ叾澶翠俊鎭姞鍏ヤ簡榪欒浠g爜
Connection:keep-alive
TCP榪炴帴鍦ㄥ彂閫佸悗灝嗕粛鐒朵繚鎸佹墦寮鐘舵侊紝浜庢槸錛屾祻瑙堝櫒鍙互緇х畫閫氳繃鐩稿悓鐨勮繛鎺ュ彂閫佽姹傘備繚鎸佽繛鎺ヨ妭鐪佷簡涓烘瘡涓姹傚緩绔嬫柊榪炴帴鎵闇鐨勬椂闂達紝榪樿妭綰︿簡緗戠粶甯﹀銆?
HTTP璇鋒眰鏍煎紡
褰撴祻瑙堝櫒鍚慦eb鏈嶅姟鍣ㄥ彂鍑鴻姹傛椂錛屽畠鍚戞湇鍔″櫒浼犻掍簡涓涓暟鎹潡錛屼篃灝辨槸璇鋒眰淇℃伅錛孒TTP璇鋒眰淇℃伅鐢?閮ㄥ垎緇勬垚錛?
l 璇鋒眰鏂規硶URI鍗忚/鐗堟湰
l 璇鋒眰澶?Request Header)
l 璇鋒眰姝f枃
涓嬮潰鏄竴涓狧TTP璇鋒眰鐨勪緥瀛愶細
GET/sample.jspHTTP/1.1
Accept:image/gif.image/jpeg,*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate
username=jinqiao&password=1234
錛?錛?nbsp; 璇鋒眰鏂規硶URI鍗忚/鐗堟湰
璇鋒眰鐨勭涓琛屾槸“鏂規硶URL璁?鐗堟湰”錛欸ET/sample.jsp HTTP/1.1
浠ヤ笂浠g爜涓?#8220;GET”浠h〃璇鋒眰鏂規硶錛?#8220;/sample.jsp”琛ㄧずURI錛?#8220;HTTP/1.1浠h〃鍗忚鍜屽崗璁殑鐗堟湰銆?
鏍規嵁HTTP鏍囧噯錛孒TTP璇鋒眰鍙互浣跨敤澶氱璇鋒眰鏂規硶銆備緥濡傦細HTTP1.1鏀寔7縐嶈姹傛柟娉曪細GET銆丳OST銆丠EAD銆丱PTIONS銆丳UT銆丏ELETE鍜孴ARCE銆傚湪Internet搴旂敤涓紝鏈甯哥敤鐨勬柟娉曟槸GET鍜孭OST銆?
URL瀹屾暣鍦版寚瀹氫簡瑕佽闂殑緗戠粶璧勬簮錛岄氬父鍙緇欏嚭鐩稿浜庢湇鍔″櫒鐨勬牴鐩綍鐨勭浉瀵圭洰褰曞嵆鍙紝鍥犳鎬繪槸浠?#8220;/”寮澶達紝鏈鍚庯紝鍗忚鐗堟湰澹版槑浜嗛氫俊榪囩▼涓嬌鐢℉TTP鐨勭増鏈?
錛?錛夈璇鋒眰澶?Request Header)
璇鋒眰澶村寘鍚澶氭湁鍏崇殑瀹㈡埛绔幆澧冨拰璇鋒眰姝f枃鐨勬湁鐢ㄤ俊鎭備緥濡傦紝璇鋒眰澶村彲浠ュ0鏄庢祻瑙堝櫒鎵鐢ㄧ殑璇█錛岃姹傛鏂囩殑闀垮害絳夈?
Accept:image/gif.image/jpeg.*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
Accept-Encoding:gzip,deflate.
錛?錛夈璇鋒眰姝f枃
璇鋒眰澶村拰璇鋒眰姝f枃涔嬮棿鏄竴涓┖琛岋紝榪欎釜琛岄潪甯擱噸瑕侊紝瀹冭〃紺鴻姹傚ご宸茬粡緇撴潫錛屾帴涓嬫潵鐨勬槸璇鋒眰姝f枃銆傝姹傛鏂囦腑鍙互鍖呭惈瀹㈡埛鎻愪氦鐨勬煡璇㈠瓧絎︿覆淇℃伅錛?
username=jinqiao&password=1234
鍦ㄤ互涓婄殑渚嬪瓙鐨凥TTP璇鋒眰涓紝璇鋒眰鐨勬鏂囧彧鏈変竴琛屽唴瀹廣傚綋鐒訛紝鍦ㄥ疄闄呭簲鐢ㄤ腑錛孒TTP璇鋒眰姝f枃鍙互鍖呭惈鏇村鐨勫唴瀹廣?
HTTP璇鋒眰鏂規硶鎴戣繖閲屽彧璁ㄨGET鏂規硶涓嶱OST鏂規硶
GET鏂規硶
GET鏂規硶鏄粯璁ょ殑HTTP璇鋒眰鏂規硶錛屾垜浠棩甯哥敤GET鏂規硶鏉ユ彁浜よ〃鍗曟暟鎹紝鐒惰岀敤GET鏂規硶鎻愪氦鐨勮〃鍗曟暟鎹彧緇忚繃浜嗙畝鍗曠殑緙栫爜錛屽悓鏃跺畠灝嗕綔涓篣RL鐨勪竴閮ㄥ垎鍚慦eb鏈嶅姟鍣ㄥ彂閫侊紝鍥犳錛屽鏋滀嬌鐢℅ET鏂規硶鏉ユ彁浜よ〃鍗曟暟鎹氨瀛樺湪鐫瀹夊叏闅愭偅涓娿備緥濡?
Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
浠庝笂闈㈢殑URL璇鋒眰涓紝寰堝鏄撳氨鍙互杈╄鍑鴻〃鍗曟彁浜ょ殑鍐呭銆傦紙錛熶箣鍚庣殑鍐呭錛夊彟澶栫敱浜嶨ET鏂規硶鎻愪氦鐨勬暟鎹槸浣滀負URL璇鋒眰鐨勪竴閮ㄥ垎鎵浠ユ彁浜ょ殑鏁版嵁閲忎笉鑳藉お澶?
POST鏂規硶
POST鏂規硶鏄疓ET鏂規硶鐨勪竴涓浛浠f柟娉曪紝瀹冧富瑕佹槸鍚慦eb鏈嶅姟鍣ㄦ彁浜よ〃鍗曟暟鎹紝灝ゅ叾鏄ぇ鎵歸噺鐨勬暟鎹侾OST鏂規硶鍏嬫湇浜咷ET鏂規硶鐨勪竴浜涚己鐐廣傞氳繃POST鏂規硶鎻愪氦琛ㄥ崟鏁版嵁鏃訛紝鏁版嵁涓嶆槸浣滀負URL璇鋒眰鐨勪竴閮ㄥ垎鑰屾槸浣滀負鏍囧噯鏁版嵁浼犻佺粰Web鏈嶅姟鍣紝榪欏氨鍏嬫湇浜咷ET鏂規硶涓殑淇℃伅鏃犳硶淇濆瘑鍜屾暟鎹噺澶皬鐨勭己鐐廣傚洜姝わ紝鍑轟簬瀹夊叏鐨勮冭檻浠ュ強瀵圭敤鎴烽殣縐佺殑灝婇噸錛岄氬父琛ㄥ崟鎻愪氦鏃墮噰鐢≒OST鏂規硶銆?
浠庣紪紼嬬殑瑙掑害鏉ヨ錛屽鏋滅敤鎴烽氳繃GET鏂規硶鎻愪氦鏁版嵁錛屽垯鏁版嵁瀛樻斁鍦≦UERY錛縎TRING鐜鍙橀噺涓紝鑰孭OST鏂規硶鎻愪氦鐨勬暟鎹垯鍙互浠庢爣鍑嗚緭鍏ユ祦涓幏鍙栥?
HTTP搴旂瓟涓嶩TTP璇鋒眰鐩鎬技錛孒TTP鍝嶅簲涔熺敱3涓儴鍒嗘瀯鎴愶紝鍒嗗埆鏄細
l 銆鍗忚鐘舵佺増鏈唬鐮佹弿榪?
l 銆鍝嶅簲澶?Response Header)
l 銆鍝嶅簲姝f枃
涓嬮潰鏄竴涓狧TTP鍝嶅簲鐨勪緥瀛愶細
HTTP/1.1 200 OK
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:23:42 GMT
Content-Length:112
<html>
<head>
<title>HTTP鍝嶅簲紺轟緥<title>
</head>
<body>
Hello HTTP!
</body>
</html>
鍗忚鐘舵佷唬鐮佹弿榪癏TTP鍝嶅簲鐨勭涓琛岀被浼間簬HTTP璇鋒眰鐨勭涓琛岋紝瀹冭〃紺洪氫俊鎵鐢ㄧ殑鍗忚鏄疕TTP1.1鏈嶅姟鍣ㄥ凡緇忔垚鍔熺殑澶勭悊浜嗗鎴風鍙戝嚭鐨勮姹傦紙200琛ㄧず鎴愬姛錛?
HTTP/1.1 200 OK
鍝嶅簲澶?Response Header)鍝嶅簲澶翠篃鍜岃姹傚ご涓鏍峰寘鍚澶氭湁鐢ㄧ殑淇℃伅錛屼緥濡傛湇鍔″櫒綾誨瀷銆佹棩鏈熸椂闂淬佸唴瀹圭被鍨嬪拰闀垮害絳夛細
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:13:33 GMT
Content-Type:text/html
Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
Content-Length:112
鍝嶅簲姝f枃鍝嶅簲姝f枃灝辨槸鏈嶅姟鍣ㄨ繑鍥炵殑HTML欏甸潰錛?
<html>
<head>
<title>HTTP鍝嶅簲紺轟緥<title>
</head>
<body>
Hello HTTP!
</body>
</html>
鍝嶅簲澶村拰姝f枃涔嬮棿涔熷繀欏葷敤絀鴻鍒嗛殧銆傘銆
HTTP搴旂瓟鐮?
HTTP搴旂瓟鐮佷篃縐頒負鐘舵佺爜錛屽畠鍙嶆槧浜哤eb鏈嶅姟鍣ㄥ鐞咹TTP璇鋒眰鐘舵併侶TTP搴旂瓟鐮佺敱3浣嶆暟瀛楁瀯鎴愶紝鍏朵腑棣栦綅鏁板瓧瀹氫箟浜嗗簲絳旂爜鐨勭被鍨嬶細
1XX錛嶄俊鎭被(Information),琛ㄧず鏀跺埌Web嫻忚鍣ㄨ姹傦紝姝e湪榪涗竴姝ョ殑澶勭悊涓?
2XX錛嶆垚鍔熺被錛圫uccessful錛?琛ㄧず鐢ㄦ埛璇鋒眰琚紜帴鏀訛紝鐞嗚В鍜屽鐞嗕緥濡傦細200 OK
3XX-閲嶅畾鍚戠被(Redirection),琛ㄧず璇鋒眰娌℃湁鎴愬姛錛屽鎴峰繀欏婚噰鍙栬繘涓姝ョ殑鍔ㄤ綔銆?
4XX-瀹㈡埛绔敊璇?Client Error)錛岃〃紺哄鎴風鎻愪氦鐨勮姹傛湁閿欒 渚嬪錛?04 NOT Found錛屾剰鍛崇潃璇鋒眰涓墍寮曠敤鐨勬枃妗d笉瀛樺湪銆?
5XX-鏈嶅姟鍣ㄩ敊璇?Server Error)琛ㄧず鏈嶅姟鍣ㄤ笉鑳藉畬鎴愬璇鋒眰鐨勫鐞嗭細濡?500
瀵逛簬鎴戜滑Web寮鍙戜漢鍛樻潵璇存帉鎻TTP搴旂瓟鐮佹湁鍔╀簬鎻愰珮Web搴旂敤紼嬪簭璋冭瘯鐨勬晥鐜囧拰鍑嗙‘鎬с?
瀹夊叏榪炴帴
Web搴旂敤鏈甯歌鐨勭敤閫斾箣涓鏄數瀛愬晢鍔★紝鍙互鍒╃敤Web鏈嶅姟鍣ㄧ紼嬪簭浣夸漢浠兘澶熺綉緇滆喘鐗╋紝闇瑕佹寚鍑轟竴鐐規槸錛岀己鐪佹儏鍐典笅錛岄氳繃Internet鍙戦佷俊鎭槸涓嶅畨鍏ㄧ殑錛屽鏋滄煇浜虹宸ф埅鑾蜂簡浣犲彂緇欐湅鍙嬬殑涓鍒欐秷鎭紝浠栧氨鑳芥墦寮瀹冿紝鍋囨兂鍦ㄩ噷闈㈡湁浣犵殑淇$敤鍗″彿鐮侊紝榪欎細鏈夊涔堢碂緋曪紝騫歌繍鐨勬槸錛屽緢澶歐eb鏈嶅姟鍣ㄤ互鍙奧eb嫻忚鍣ㄩ兘鏈夊垱绔嬪畨鍏ㄨ繛鎺ョ殑鑳藉姏錛岃繖鏍峰畠浠氨鍙互瀹夊叏鐨勯氫俊浜嗐?
閫氳繃Internet鎻愪緵瀹夊叏榪炴帴鏈甯歌鐨勬爣鍑嗘槸瀹夊叏濂楁帴灞?Secure Sockets layer,SSl)鍗忚銆係SL鍗忚鏄竴涓簲鐢ㄥ眰鍗忚(鍜孒TTP涓鏍?錛岀敤浜庡畨鍏ㄦ柟寮忓湪Web涓婁氦鎹㈡暟鎹紝SSL浣跨敤鍏紑瀵嗛挜緙栫爜緋葷粺銆備粠鏈川璁詫紝榪欐剰鍛崇潃涓氬姟涓瘡涓鏂歸兘鎷ユ湁涓涓叕寮鐨勫拰涓涓鏈夌殑瀵嗛挜銆傚綋涓鏂逛嬌鐢ㄥ彟涓鏂瑰叕寮瀵嗛挜榪涜緙栫爜鏃訛紝鍙湁鎷ユ湁鍖歸厤瀵嗛挜鐨勪漢鎵嶈兘瀵瑰叾瑙g爜銆傜畝鍗曟潵璁詫紝鍏紑瀵嗛挜緙栫爜鎻愪緵浜嗕竴縐嶇敤浜庡湪涓ゆ柟涔嬮棿浜ゆ崲鏁版嵁鐨勫畨鍏ㄦ柟娉曪紝SSL榪炴帴寤虹珛涔嬪悗錛屽鎴峰拰鏈嶅姟鍣ㄩ兘浜ゆ崲鍏紑瀵嗛挜錛屽茍鍦ㄨ繘琛屼笟鍔¤仈緋諱箣鍓嶈繘琛岄獙璇侊紝涓鏃﹀弻鏂圭殑瀵嗛挜閮介氳繃楠岃瘉錛屽氨鍙互瀹夊叏鍦頒氦鎹㈡暟鎹?
涓嬮潰榪欎釜渚嬪瓙鏄劇ず浜嗕竴涓狧TTP璇鋒眰鐨凥eader鍐呭錛岃繖浜涙暟鎹槸鐪熸浠ョ綉緇淗TTP鍗忚浠嶪E嫻忚鍣ㄤ紶閫掑埌Apache鏈嶅姟鍣ㄤ笂鐨勩?/p>
GET /icwork/? search=product HTTP/1.1
Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/vnd.ms-powerpoint,application/vnd.ms-excel,application/msword,*.*
Accept-Language:en-us
Accept-Encoding:gzip,deflate
User-Agent:Mozilla/4.0(compatible;MSIE 5.01;Windows NT 5.0;DigExt)
Host:www.icconcept.com:8080
Referer:http://www.yoursite.com/header.html
Connection:Keep-Alive
榪欐紼嬪簭浣跨敤浜?涓狧eader錛岃繕鏈変竴浜汬eader娌℃湁鍑虹幇銆傛垜浠弬鑰冭繖涓緥瀛愬叿浣撹В閲奌TTP璇鋒眰鏍煎紡銆?/p>
1.HTTP璇鋒眰琛岋細璇鋒眰琛屾牸寮忎負Method Request-URI Protocol銆傚湪涓婇潰榪欎釜渚嬪瓙閲岋紝“GET /icwork/? search=pruduct HTTP/1.1”鏄姹傝銆?/p>
2.Accept:鎸囨祻瑙堝櫒鎴栧叾浠栧鎴峰彲浠ユ帴鐖辯殑MIME鏂囦歡鏍煎紡銆係ervlet鍙互鏍規嵁瀹冨垽鏂茍榪斿洖閫傚綋鐨勬枃浠舵牸寮忋?/p>
3.Accept-Charset錛氭寚鍑烘祻瑙堝櫒鍙互鎺ュ彈鐨勫瓧絎︾紪鐮併傝嫳鏂囨祻瑙堝櫒鐨勯粯璁ゅ兼槸ISO-8859-1.
4.Accept-Language錛氭寚鍑烘祻瑙堝櫒鍙互鎺ュ彈鐨勮璦縐嶇被錛屽en鎴杄n-us錛屾寚鑻辮銆?/p>
5.Accept-Encoding錛氭寚鍑烘祻瑙堝櫒鍙互鎺ュ彈鐨勭紪鐮佹柟寮忋傜紪鐮佹柟寮忎笉鍚屼簬鏂囦歡鏍煎紡錛屽畠鏄負浜嗗帇緙╂枃浠跺茍鍔犻熸枃浠朵紶閫掗熷害銆傛祻瑙堝櫒鍦ㄦ帴鏀跺埌Web鍝嶅簲涔嬪悗鍏堣В鐮侊紝鐒跺悗鍐嶆鏌ユ枃浠舵牸寮忋?/p>
6.Authorization錛氬綋浣跨敤瀵嗙爜鏈哄埗鏃剁敤鏉ユ爣璇嗘祻瑙堝櫒銆?/p>
7.Cache-Control錛氳緗叧浜庤姹傝浠g悊鏈嶅姟鍣ㄥ瓨鍌ㄧ殑鐩稿叧閫夐」銆備竴鑸瑂ervlet鐢ㄤ笉鍒般?/p>
8.Connection錛氱敤鏉ュ憡璇夋湇鍔″櫒鏄惁鍙互緇存寔鍥哄畾鐨凥TTP榪炴帴銆侶TTP/1.1浣跨敤Keep-Alive涓洪粯璁ゅ鹼紝榪欐牱錛屽綋嫻忚鍣ㄩ渶瑕佸涓枃浠舵椂(姣斿涓涓狧TML鏂囦歡鍜岀浉鍏崇殑鍥懼艦鏂囦歡)錛屼笉闇瑕佹瘡嬈¢兘寤虹珛榪炴帴銆?/p>
9.Content-Type錛氱敤鏉ヨ〃鍚峳equest鐨勫唴瀹圭被鍨嬨傚彲浠ョ敤HttpServletRequest鐨刧etContentType()鏂規硶鍙栧緱銆?/p>
10.Cookie錛氭祻瑙堝櫒鐢ㄨ繖涓睘鎬у悜鏈嶅姟鍣ㄥ彂閫丆ookie銆侰ookie鏄湪嫻忚鍣ㄤ腑瀵勫瓨鐨勫皬鍨嬫暟鎹綋錛屽畠鍙互璁拌澆鍜屾湇鍔″櫒鐩稿叧鐨勭敤鎴蜂俊鎭紝涔熷彲浠ョ敤鏉ュ疄鐜頒細璇濆姛鑳姐?/p>
11.Expect錛氳〃鏃跺鎴烽鏈熺殑鍝嶅簲鐘舵併?/p>
12.From錛氱粰鍑哄鎴風HTTP璇鋒眰璐熻矗浜虹殑email鍦板潃銆?/p>
13.Host錛氬搴旂綉鍧URL涓殑Web鍚嶇О鍜岀鍙e彿銆?/p>
14.If-Match錛氫緵PUT鏂規硶浣跨敤銆?/p>
15.If-Modified-Since錛氬鎴蜂嬌鐢ㄨ繖涓睘鎬ц〃鏄庡畠鍙渶瑕佸湪鎸囧畾鏃ユ湡涔嬪悗鏇存敼榪囩殑緗戦〉銆傚洜涓烘祻瑙堝櫒鍙互浣跨敤鍏跺瓨鍌ㄧ殑鏂囦歡鑰屼笉蹇呬粠鏈嶅姟鍣ㄨ姹傦紝榪欐牱鑺傜渷浜哤eb璧勬簮銆傜敱浜嶴ervlet鏄姩鎬佺敓鎴愮殑緗戦〉錛屼竴鑸笉闇瑕佷嬌鐢ㄨ繖涓睘鎬с?/p>
16.If-None-Match錛氬拰If-Match鐩稿弽鐨勬搷浣滐紝渚汸UT鏂規硶浣跨敤銆?/p>
17.If-Unmodified-Since錛氬拰If-Match-Since鐩稿弽銆?/p>
18.Pragma錛氳繖涓睘鎬у彧鏈変竴縐嶅鹼紝鍗砅ragma錛歯o-cache,琛ㄦ槑濡傛灉servlet鍏呭綋浠g悊鏈嶅姟鍣紝鍗充嬌鍏舵湁宸茬粡瀛樺偍鐨勭綉欏碉紝涔熻灝嗚姹備紶閫掔粰鐩殑鏈嶅姟鍣ㄣ?/p>
19.Proxy-Authorization錛氫唬鐞嗘湇鍔″櫒浣跨敤榪欎釜灞炴э紝Servlet涓鑸敤涓嶅埌銆?/p>
20.Range錛氬鏋滃鎴鋒湁閮ㄥ垎緗戦〉錛岃繖涓睘鎬у彲浠ヨ姹傚墿浣欓儴鍒嗐?/p>
21.Referer錛氳〃鏄庝駭鐢熻姹傜殑緗戦〉URL銆傚姣斾粠緗戦〉/icconcept/index.jsp涓偣鍑諱竴涓摼鎺ュ埌緗戦〉/icwork/search錛屽湪鍚戞湇鍔″櫒鍙戦佺殑GET/icwork/search涓殑璇鋒眰涓紝Referer鏄?a href="http://hostname:8080/icconcept/index.php">http://hostname:8080/icconcept/index.php銆傝繖涓睘鎬у彲浠ョ敤鏉ヨ窡韙猈eb璇鋒眰鏄粠浠涔堢綉绔欐潵鐨勩?/p>
22.Upgrage錛氬鎴烽氳繃榪欎釜灞炴ц瀹氬彲浠ヤ嬌鐢ㄤ笌HTTP/1.1涓嶅悓鐨勫崗璁?/p>
23.User-Agent錛氭槸瀹㈡埛嫻忚鍣ㄥ悕縐般?/p>
24.Via錛氱敤鏉ヨ褰昗eb璇鋒眰緇忚繃鐨勪唬鐞嗘湇鍔″櫒鎴朩eb閫氶亾銆?/p>
25.Warning錛氱敤鏉ョ敱瀹㈡埛澹版槑浼犻掓垨瀛樺偍(cache)閿欒銆?/p>
SOAP=RPC+HTTP+XML
SOAP綆鍗曠殑鐞嗚В錛屽氨鏄繖鏍風殑涓涓紑鏀懼崗璁甋OAP=RPC+HTTP+XML錛?font color=#800000>閲囩敤HTTP浣滀負搴曞眰閫氳鍗忚錛汻PC浣滀負涓鑷存х殑璋冪敤閫斿緞錛岋幾錛棘浣滀負鏁版嵁浼犻佺殑鏍煎紡錛屽厑璁告湇鍔℃彁渚涜呭拰鏈嶅姟瀹㈡埛緇忚繃闃茬伀澧欏湪INTERNET榪涜閫氳浜や簰銆?/font>RPC鐨勬弿鍙欏彲鑳戒笉澶у噯紜紝鍥犱負SOAP涓寮濮嬫瀯鎬濆氨鏄瀹炵幇騫沖彴涓庣幆澧冪殑鏃犲叧鎬у拰鐙珛鎬э紝姣忎竴涓氳繃緗戠粶鐨勮繙紼嬭皟鐢ㄩ兘鍙互閫氳繃SOAP灝佽璧鋒潵錛屽寘鎷珼CE錛圖istributed Computing Environment 錛夈RPC CALLS錛孋OM/DCOM CALLS, CORBA CALLS, JAVA CALLS錛宔tc銆?
SOAP 浣跨敤 HTTP 浼犻?XML錛屽敖綆TTP 涓嶆槸鏈夋晥鐜囩殑閫氳鍗忚錛岃屼笖 XML 榪橀渶瑕侀澶栫殑鏂囦歡瑙f瀽錛坧arse錛夛紝涓よ呬嬌寰椾氦鏄撶殑閫熷害澶уぇ浣庝簬鍏跺畠鏂規銆備絾鏄疿ML 鏄竴涓紑鏀俱佸仴鍏ㄣ佹湁璇箟鐨勮鎭満鍒訛紝鑰?HTTP 鏄竴涓箍娉涘張鑳介伩鍏嶈澶氬叧浜庨槻鐏鐨勯棶棰橈紝浠庤屼嬌SOAP寰楀埌浜嗗箍娉涚殑搴旂敤銆備絾鏄鏋滄晥鐜囧浣犳潵璇村緢閲嶈錛岄偅涔堜綘搴旇澶氳冭檻鍏跺畠鐨勬柟寮忥紝鑰屼笉瑕佺敤 SOAP銆?