读书人

HTTP Method:表中的 GET P

发布时间: 2012-10-09 10:21:45 作者: rapoo

HTTP Method:表中的 GET POST 有什差?
个人技术博客:http://www.cooli.cc/

Introduction

篇文章的原因某位正在念的同向我提出的疑,我 HTTP Method 的念其在在的教育中相缺乏。以往,大部分的校程都直接授程式等程,忽略十年最泛使用的 HTTP 定。

GET POST 有表的人一定不陌生,但你了解什是 GET POST !? 今的工具相的,甚至不需要接 HTML 法就能完成一模不小的站,地很多人都忘了 HTTP 底的作原理,造成在生的情下法正行。

早期在撰 HTML 表法,都到以下的法,然而大部分的程式都用 POST 行表送。

<form action="" method="POST/GET">
</form>
然而在我的程式中要取表的只需要呼叫系已封好的方法即可,像是 PHP 使用 $_REQUEST、JAVA 使用 getParameter()、ASP 使用 Request.Form() 些方法等等。
由上述的方法看,似乎用 POST 或 GET 好像不是很重要。多程式於表 method 用法的"POST可以送比多的料"、"表送案的候要使用 POST"、"POST比GET安全"等等奇怪的概念。

What’s HTTP Method ??

其使用 POST 或 GET 其是有差的,我先明一下 HTTP Method,在 HTTP 1.1 的版本中定了八 Method (方法),如下所示:

OPTIONS
GET
HEAD
POST
PUT
DELETE
TRACE
CONNECT
天阿,些方法看起真是陌生。而我使用的表只用了其中方法 (GET/POST),其他的方法很少用到,但是在 RESTful 的架中就使用到更多的 Method 化,有再大家介。

GET vs POST Method

先例子,如果 HTTP 代表在我生活中寄信的制,那信封的撰格式就是 HTTP。我姑且信封外的容 http-header,信封的信 message-body,那 HTTP Method 就是你要告差的寄信。

假 GET 表示信封不得信件的寄送方式(空信封),你可以把要的在信封(http-header)上,止,格比便宜。然而 POST 就是信封有信件的寄送方式(信封有容物),不但信封可以西,信封(message-body)可以置入你想要寄送的料或案,格。

使用 GET 的候我直接要送的料以 Query String(一Key/Vaule的方式)加在我要寄送的地址(URL)後面,然後交差送。使用 POST 的候是寄送地址(URL)在信封上,另外要送的料在另一信後,信放到信封面,交差送。

接著我介一下的作情:

我先看看 GET 怎送料的,我送出一 GET 表,如下例:

<form method="get" action="">
<input type="text" name="id" />
<input type="submit" />
</form>
表 Submit 之後器的址就成 "http://xxx.toright.com/?id=010101″,器自表容 Query String 加在 URL 行。

後看一下 HTTP Request 封包的容:

GET /?id=010101 HTTP/1.1Host: xxx.toright.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 GTB7.1 ( .NET CLR 3.5.30729)Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-tw,en-us;q=0.7,en;q=0.3Accept-Encoding: gzip,deflateAccept-Charset: UTF-8,*Keep-Alive: 115Connection: keep-alive
在 HTTP GET Method 中是不允在 message-body 中料的,因是 GET 嘛,就是要取料的意思。

器的址列就可以看我表要送的料,若是要送密不是"一"…….就是大家常提到安全性。

再看看 POST 送料

<form method="post" action="">
<input type="text" name="id" />
<input type="submit" />
</form>
址列有化,那我看一下 HTTP Request 封包的容:

POST / HTTP/1.1Host: xxx.toright.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 GTB7.1 ( .NET CLR 3.5.30729)Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-tw,en-us;q=0.7,en;q=0.3Accept-Encoding: gzip,deflateAccept-Charset: UTF-8,*Keep-Alive: 115Connection: keep-aliveContent-Type: application/x-www-form-urlencoded</code><code>Content-Length: 9id=020202
看出所以然了?原 POST 是表料放在 message-body 行送,在不偷看封包的情下似乎安全一些些…….-_- 此外在送案的候使用 multipart ,案其他的表位一放在 message-body 中行送。就是 GET POST 的差。

src:http://blog.toright.com/?p=1203

读书人网 >操作系统

热点推荐