Re: [問題] 網頁POST、GET有何差

看板Web_Design作者 (System hacked)時間12年前 (2011/11/20 08:29), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串7/11 (看更多)
※ 引述《APE36 (PT鄉民)》之銘言: : 詢問一下 : POST、GET : 兩個指令上有何差別呢?? : 因為上網看過資料也沒看到整理出的重點來... 因為包括了定義、實做、慣例,而一般人對於 HTTP GET/POST 與 HTML Form GET/POST 沒搞清楚,所以你在網路上會看到一堆奇怪的解釋。 : 所以上來發問一下 : 請教高手了解的人可以為我解答下!! : 謝謝 先講 HTTP GET/POST 的差異: HTTP 對於 GET 與 POST 的定義在 RFC 2616,重點在第一句: The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI. 很粗淺的意思是,Request-URI 決定內容。 而 POST: The actual function performed by the POST method is determined by the server and is usually dependent on the Request-URI. 一樣,很粗解的解釋是,POST 會在 server 上執行一些功能,這些功能會依照 Request-URI 的不同而不一樣 (/delete 功能當然與 /create 不同)。 也因為 RFC 2616 這樣定義 GET/POST/PUT/DELETE,所以後來有人總算依照這個 定義引出 REST 觀念,這邊先不提。 傳參數的事情: 在 HTTP GET/POST 定義中,並沒有講到參數要怎麼傳。所以在某些地方你還是 看得到各種傳參數的方法。 以 GET 來說: http://search.books.com.tw/exep/prod_search.php?cat=all&key=steve 這篇文章在 HTTP/1.1 內只傳了「一個」參數,就是 Request-URI。 以 POST 來說,你可以這樣送: POST /create HTTP/1.1 Host: test.example.com Content-Length: 10 1234567890 這是合法的 POST request。 再來,定義一套邏輯「傳入多個參數」: HTTP 只定義了「Request-URI」這一個參數,那麼我們可以「人為」在上面定義 「多參數」的傳遞方式。舉幾個例子來說: * http://taiwan.cnet.com/crave/0,2000088746,20152221,00.htm CNET 的人可能把 crave 當作一個參數、後面四組數字又是四個參數,最後的 htm 也是參數。 * http://www.techbang.com.tw/posts/7595-google-said-that-android-40-is-not-flash-adobe-will-not-give-to-see T 客邦的人可能把 posts 當作一個參數,7595 當作一個參數,後面的字可能 不是參數。 要注意的是,這邊包括了大量的人為定義。並沒有 spec 規定要用 "," 或是 "." 或是任何字當作分隔。我可以這樣定義我自己的「參數」: * http://test.example.com/telephone/0020000000000 其中第一個 0 我定義是中華電信、第二個 0 我定義是在台北地區所辦的門號, "2000" 是辦的年份,後面都是流水號,最後一碼是檢查碼。 同樣的道理,放到 POST 裡面也通。你可以自己定義「格式」。反正你亂定義的 結果就是寫 code 切得很辛苦 XD 於是,有一套定義剛好可以拿來用,就是 HTML Form GET/POST: 一般現在都是看 HTML 4.01 裡面的定義,關於 HTML5 Form 的規格,反正還在訂, 如果你沒興趣的話可以先不管他。 定義在「17.13.4 Form content types」這邊,也就是常見的 & 分隔以及 escape 規定。 因為 HTML Form 送出來是一套標準,於是大多數的語言都有 library 可以處理 這個定義方式。像是 PHP 的 $_GET、$_POST 會自己切好放到 array 內。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.242.135.97
文章代碼(AID): #1Eo4dhkr (Web_Design)
討論串 (同標題文章)
文章代碼(AID): #1Eo4dhkr (Web_Design)