Httpå®ä¹äºä¸æå¡å¨äº¤äºçä¸åæ¹æ³ï¼æåºæ¬çæ¹æ³æ4ç§ï¼åå«æ¯GETï¼POSTï¼PUTï¼DELETEãURLå
¨ç§°æ¯èµæºæ述符ï¼æ们å¯ä»¥è¿æ ·è®¤ä¸ºï¼ä¸ä¸ªURLå°åï¼å®ç¨äºæè¿°ä¸ä¸ªç½ç»ä¸çèµæºï¼èHTTPä¸çGETï¼POSTï¼PUTï¼DELETE就对åºç对è¿ä¸ªèµæºçæ¥ï¼æ¹ï¼å¢ï¼å 4个æä½ãå°è¿éï¼å¤§å®¶åºè¯¥æ个大æ¦çäºè§£äºï¼GETä¸è¬ç¨äºè·å/æ¥è¯¢èµæºä¿¡æ¯ï¼èPOSTä¸è¬ç¨äºæ´æ°èµæºä¿¡æ¯ã
ãã1.æ ¹æ®HTTPè§èï¼GETç¨äºä¿¡æ¯è·åï¼èä¸åºè¯¥æ¯å®å
¨çåå¹ççã
ãã(1).æè°å®å
¨çæå³ç该æä½ç¨äºè·åä¿¡æ¯èéä¿®æ¹ä¿¡æ¯ãæ¢å¥è¯è¯´ï¼GET 请æ±ä¸è¬ä¸åºäº§çå¯ä½ç¨ãå°±æ¯è¯´ï¼å®ä»
ä»
æ¯è·åèµæºä¿¡æ¯ï¼å°±åæ°æ®åºæ¥è¯¢ä¸æ ·ï¼ä¸ä¼ä¿®æ¹ï¼å¢å æ°æ®ï¼ä¸ä¼å½±åèµæºçç¶æã
ãã* 注æï¼è¿éå®å
¨çå«ä¹ä»
ä»
æ¯ææ¯éä¿®æ¹ä¿¡æ¯ã
ãã(2).å¹ççæå³ç对åä¸URLçå¤ä¸ªè¯·æ±åºè¯¥è¿ååæ ·çç»æãè¿éæå解éä¸ä¸å¹çè¿ä¸ªæ¦å¿µï¼
ããå¹çï¼idempotentãidempotenceï¼æ¯ä¸ä¸ªæ°å¦æ计ç®æºå¦æ¦å¿µï¼å¸¸è§äºæ½è±¡ä»£æ°ä¸ã
ããå¹çæä¸ä¸å ç§å®ä¹ï¼
ãã对äºåç®è¿ç®ï¼å¦æä¸ä¸ªè¿ç®å¯¹äºå¨èå´å
çææçä¸ä¸ªæ°å¤æ¬¡è¿è¡è¯¥è¿ç®æå¾çç»æåè¿è¡ä¸æ¬¡è¯¥è¿ç®æå¾çç»ææ¯ä¸æ ·çï¼é£ä¹æ们就称该è¿ç®æ¯å¹ççãæ¯å¦ç»å¯¹å¼è¿ç®å°±æ¯ä¸ä¸ªä¾åï¼å¨å®æ°éä¸ï¼æabs(a)=abs(abs(a))ã
ãã对äºåç®è¿ç®ï¼åè¦æ±å½åä¸è¿ç®ç两个å¼æ¯çå¼çæ
åµä¸ï¼å¦æ满足è¿ç®ç»æä¸åä¸è¿ç®ç两个å¼ç¸çï¼å称该è¿ç®å¹çï¼å¦æ±ä¸¤ä¸ªæ°çæ大å¼çå½æ°ï¼æå¨å¨å®æ°éä¸å¹çï¼å³max(x,x) = xã
çå®ä¸è¿°è§£éåï¼åºè¯¥å¯ä»¥ç解GETå¹ççå«ä¹äºã
ããä½å¨å®é
åºç¨ä¸ï¼ä»¥ä¸2æ¡è§å®å¹¶æ²¡æè¿ä¹ä¸¥æ ¼ãå¼ç¨å«äººæç« çä¾åï¼æ¯å¦ï¼æ°é»ç«ç¹ç头çä¸ææ´æ°ãè½ç¶ç¬¬äºæ¬¡è¯·æ±ä¼è¿åä¸åçä¸æ¹æ°é»ï¼è¯¥æä½ä»ç¶è¢«è®¤ä¸ºæ¯å®å
¨çåå¹ççï¼å 为å®æ»æ¯è¿åå½åçæ°é»ãä»æ ¹æ¬ä¸è¯´ï¼å¦æç®æ æ¯å½ç¨æ·æå¼ä¸ä¸ªé¾æ¥æ¶ï¼ä»å¯ä»¥ç¡®ä¿¡ä»èªèº«çè§åº¦æ¥ç没ææ¹åèµæºå³å¯ã
ãã2.æ ¹æ®HTTPè§èï¼POST表示å¯è½ä¿®æ¹åæå¡å¨ä¸çèµæºç请æ±ã继ç»å¼ç¨ä¸é¢çä¾åï¼è¿æ¯æ°é»ä»¥ç½ç«ä¸ºä¾ï¼è¯»è
对æ°é»å表èªå·±çè¯è®ºåºè¯¥éè¿POSTå®ç°ï¼å 为å¨è¯è®ºæ交åç«ç¹çèµæºå·²ç»ä¸åäºï¼æè
说èµæºè¢«ä¿®æ¹äºã
ããä¸é¢å¤§æ¦è¯´äºä¸ä¸HTTPè§èä¸GETåPOSTçä¸äºåçæ§çé®é¢ãä½å¨å®é
çåçæ¶åï¼å¾å¤äººå´æ²¡ææç
§HTTPè§èå»åï¼å¯¼è´è¿ä¸ªé®é¢çåå æå¾å¤ï¼æ¯å¦è¯´ï¼
ãã1.å¾å¤äººè´ªæ¹ä¾¿ï¼æ´æ°èµæºæ¶ç¨äºGETï¼å 为ç¨POSTå¿
é¡»è¦å°FORMï¼è¡¨åï¼ï¼è¿æ ·ä¼éº»ç¦ä¸ç¹ã
ãã2.对èµæºçå¢ï¼å ï¼æ¹ï¼æ¥æä½ï¼å
¶å®é½å¯ä»¥éè¿GET/POSTå®æï¼ä¸éè¦ç¨å°PUTåDELETEã
ãã3.å¦å¤ä¸ä¸ªæ¯ï¼æ©æçWeb MVCæ¡æ¶è®¾è®¡è
们并没æææè¯å°å°URLå½ä½æ½è±¡çèµæºæ¥çå¾
å设计ï¼æ以导è´ä¸ä¸ªæ¯è¾ä¸¥éçé®é¢æ¯ä¼ ç»çWeb MVCæ¡æ¶åºæ¬ä¸é½åªæ¯æGETåPOST两ç§HTTPæ¹æ³ï¼èä¸æ¯æPUTåDELETEæ¹æ³ã
ãã* ç®å解éä¸ä¸MVCï¼MVCæ¬æ¥æ¯åå¨äºDesktopç¨åºä¸çï¼Mæ¯ææ°æ®æ¨¡åï¼Væ¯æç¨æ·çé¢ï¼Cåæ¯æ§å¶å¨ã使ç¨MVCçç®çæ¯å°MåVçå®ç°ä»£ç å离ï¼ä»è使åä¸ä¸ªç¨åºå¯ä»¥ä½¿ç¨ä¸åç表ç°å½¢å¼ã
ãã以ä¸3ç¹å
¸åå°æè¿°äºèä¸å¥çé£æ ¼ï¼æ²¡æä¸¥æ ¼éµå®HTTPè§èï¼ï¼éçæ¶æçåå±ï¼ç°å¨åºç°REST(Representational State Transfer)ï¼ä¸å¥æ¯æHTTPè§èçæ°é£æ ¼ï¼è¿éä¸å¤è¯´äºï¼å¯ä»¥åèãRESTful Web Servicesãã
ãã说å®åçæ§çé®é¢ï¼æ们åä»è¡¨é¢ç°åä¸é¢ççGETåPOSTçåºå«ï¼
ãã1.GET请æ±çæ°æ®ä¼éå¨URLä¹åï¼å°±æ¯ææ°æ®æ¾ç½®å¨HTTPå议头ä¸ï¼ï¼ä»¥?åå²URLåä¼ è¾æ°æ®ï¼åæ°ä¹é´ä»¥&ç¸è¿ï¼å¦ï¼login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BDãå¦ææ°æ®æ¯è±æåæ¯/æ°åï¼åæ ·åéï¼å¦ææ¯ç©ºæ ¼ï¼è½¬æ¢ä¸º+ï¼å¦ææ¯ä¸æ/å
¶ä»å符ï¼åç´æ¥æå符串ç¨BASE64å å¯ï¼å¾åºå¦ï¼%E4%BD%A0%E5%A5%BDï¼å
¶ä¸ï¼
XXä¸çXX为该符å·ä»¥16è¿å¶è¡¨ç¤ºçASCIIã
ããPOSTææ交çæ°æ®åæ¾ç½®å¨æ¯HTTPå
çå
ä½ä¸ã
ãã2."GETæ¹å¼æ交çæ°æ®æå¤åªè½æ¯1024åèï¼ç论ä¸POST没æéå¶ï¼å¯ä¼ è¾å¤§éçæ°æ®ï¼IIS4ä¸æ大为80KBï¼IIS5ä¸ä¸º100KB"ï¼ï¼ï¼
ãã以ä¸è¿å¥æ¯æä»å
¶ä»æç« è½¬è¿æ¥çï¼å
¶å®è¿æ ·è¯´æ¯é误çï¼ä¸åç¡®çï¼
ãã(1).é¦å
æ¯"GETæ¹å¼æ交çæ°æ®æå¤åªè½æ¯1024åè"ï¼å 为GETæ¯éè¿URLæ交æ°æ®ï¼é£ä¹GETå¯æ交çæ°æ®éå°±è·URLçé¿åº¦æç´æ¥å
³ç³»äºãèå®é
ä¸ï¼URLä¸åå¨åæ°ä¸éçé®é¢ï¼HTTPåè®®è§è没æ对URLé¿åº¦è¿è¡éå¶ãè¿ä¸ªéå¶æ¯ç¹å®çæµè§å¨åæå¡å¨å¯¹å®çéå¶ãIE对URLé¿åº¦çéå¶æ¯2083åè(2K+35)ã对äºå
¶ä»æµè§å¨ï¼å¦NetscapeãFireFoxçï¼ç论ä¸æ²¡æé¿åº¦éå¶ï¼å
¶éå¶åå³äºæä½ç³»ç»çæ¯æã
ãã注æè¿æ¯éå¶æ¯æ´ä¸ªURLé¿åº¦ï¼èä¸ä»
ä»
æ¯ä½ çåæ°å¼æ°æ®é¿åº¦ã[è§åèèµæ5]
ãã(2).ç论ä¸è®²ï¼POSTæ¯æ²¡æ大å°éå¶çï¼HTTPåè®®è§èä¹æ²¡æè¿è¡å¤§å°éå¶ï¼è¯´âPOSTæ°æ®éåå¨80K/100Kç大å°éå¶âæ¯ä¸åç¡®çï¼POSTæ°æ®æ¯æ²¡æéå¶çï¼èµ·éå¶ä½ç¨çæ¯æå¡å¨çå¤çç¨åºçå¤çè½åã
ãã对äºASPç¨åºï¼Request对象å¤çæ¯ä¸ªè¡¨ååæ¶åå¨100Kçæ°æ®é¿åº¦éå¶ãä½å¦æ使ç¨Request.BinaryReadå没æè¿ä¸ªéå¶ã
ããç±è¿ä¸ªå»¶ä¼¸åºå»ï¼å¯¹äºIIS 6.0ï¼å¾®è½¯åºäºå®å
¨èèï¼å 大äºéå¶ãæ们è¿éè¦æ³¨æï¼
ãããã 1).IIS 6.0é»è®¤ASP POSTæ°æ®éæ大为200KBï¼æ¯ä¸ªè¡¨ååéå¶æ¯100KBã
ãããã 2).IIS 6.0é»è®¤ä¸ä¼ æ件çæ大大å°æ¯4MBã
ãããã 3).IIS 6.0é»è®¤æ大请æ±å¤´æ¯16KBã
ããIIS 6.0ä¹å没æè¿äºéå¶ã[è§åèèµæ5]
ããæ以ä¸é¢ç80Kï¼100Kå¯è½åªæ¯é»è®¤å¼èå·²(注ï¼å
³äºIIS4åIIS5çåæ°ï¼æè¿æ²¡æ确认)ï¼ä½è¯å®æ¯å¯ä»¥èªå·±è®¾ç½®çãç±äºæ¯ä¸ªçæ¬çIIS对è¿äºåæ°çé»è®¤å¼é½ä¸ä¸æ ·ï¼å
·ä½è¯·åèç¸å
³çIISé
ç½®ææ¡£ã
ãã3.å¨ASPä¸ï¼æå¡ç«¯è·åGET请æ±åæ°ç¨Request.QueryStringï¼è·åPOST请æ±åæ°ç¨Request.Formãå¨JSPä¸ï¼ç¨request.getParameter(\"XXXX\")æ¥è·åï¼è½ç¶jspä¸ä¹ærequest.getQueryString()æ¹æ³ï¼ä½ä½¿ç¨èµ·æ¥æ¯è¾éº»ç¦ï¼æ¯å¦ï¼ä¼ ä¸ä¸ªtest.jsp?name=hyddd&password=hydddï¼ç¨request.getQueryString()å¾å°çæ¯ï¼name=hyddd&password=hydddãå¨PHPä¸ï¼å¯ä»¥ç¨$_GETå$_POSTåå«è·åGETåPOSTä¸çæ°æ®ï¼è$_REQUESTåå¯ä»¥è·åGETåPOST两ç§è¯·æ±ä¸çæ°æ®ãå¼å¾æ³¨æçæ¯ï¼JSPä¸ä½¿ç¨requeståPHPä¸ä½¿ç¨$_REQUESTé½ä¼æéæ£ï¼è¿ä¸ªä¸æ¬¡åå个æç« æ»ç»ã
ãã4.POSTçå®å
¨æ§è¦æ¯GETçå®å
¨æ§é«ã注æï¼è¿éæ说çå®å
¨æ§åä¸é¢GETæå°çâå®å
¨âä¸æ¯å个æ¦å¿µãä¸é¢âå®å
¨âçå«ä¹ä»
ä»
æ¯ä¸ä½æ°æ®ä¿®æ¹ï¼èè¿éå®å
¨çå«ä¹æ¯çæ£çSecurityçå«ä¹ï¼æ¯å¦ï¼éè¿GETæ交æ°æ®ï¼ç¨æ·ååå¯ç å°ææåºç°å¨URLä¸ï¼å 为(1)ç»å½é¡µé¢æå¯è½è¢«æµè§å¨ç¼åï¼(2)å
¶ä»äººæ¥çæµè§å¨çåå²çºªå½ï¼é£ä¹å«äººå°±å¯ä»¥æ¿å°ä½ çè´¦å·åå¯ç äºï¼é¤æ¤ä¹å¤ï¼ä½¿ç¨GETæ交æ°æ®è¿å¯è½ä¼é æCross-site request forgeryæ»å»ã
ããæ»ç»ä¸ä¸ï¼Getæ¯åæå¡å¨åç´¢åæ°æ®çä¸ç§è¯·æ±ï¼èPostæ¯åæå¡å¨æ交æ°æ®çä¸ç§è¯·æ±ï¼å¨FORMï¼è¡¨åï¼ä¸ï¼Methodé»è®¤ä¸º"GET"ï¼å®è´¨ä¸ï¼GETåPOSTåªæ¯åéæºå¶ä¸åï¼å¹¶ä¸æ¯ä¸ä¸ªåä¸ä¸ªåï¼
温馨提示:答案为网友推荐,仅供参考