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

看板Web_Design作者 (葉酸酸)時間14年前 (2011/11/19 00:41), 編輯推噓1(215)
留言8則, 5人參與, 最新討論串5/11 (看更多)

11/18 00:57,
啥小朋友啊, 你不要誤導人好不好
11/18 00:57

11/18 04:35,
要害人也不是這樣
11/18 04:35
那請問正確的是怎樣?我是看 html spec 裡面寫的。 我原文裡面也有放 reference。 17.13.1 Form submission method http://www.w3.org/TR/html401/interact/forms.html#h-17.13.1 如果你是要說我把 get 跟 select 以及 post 與 update / insert / delete 對應起來的說法不精確, 那我可以接受,因為事實上我也認為這樣的說法不精確, 所以我才在原文裡加上 spec 看一下這句話。我想已經善進告知責任哦。 > -------------------------------------------------------------------------- < The "get" method should be used when the form is idempotent (i.e., causes no side-effects). Many database searches have no visible side-effects and make ideal applications for the "get" method. If the service associated with the processing of a form causes side effects (for example, if the form modifies a database or subscription to a service), the "post" method should be used. 當表格不改變“狀態”的情況就應該用 get,換句話說, 就是不造成“副作用”的時候。通常搜尋資料庫的時候, 都沒有明顯可見的副作用,因此是最適合用 get 的時候。 (idempotent 不知道要怎麼翻譯,但指的是運算前後相等的運算, 例如 x + 0 = x 與 x * 1 = x 這兩種運算。) 如果網站服務提供來處理表格的程式會造成副作用, 例如當表格改變資料庫的狀態,或改變會員的狀態。 (subscription 一般是指付費會員。) > -------------------------------------------------------------------------- < 除了從 idempotence 來判斷,另外一個常見的判斷方式是看字面, 這前面有人提過了,簡單溫習一下,client 跟 server 要資料用 get; client 給 server 資料用 post。 > -------------------------------------------------------------------------- < 另外一些選擇的原因也包括資料量,get 可以送的比較少,post 可以送的比較多。 (雖然 rfc 2068 沒規定 uri 長,不過伺服器當然不可能處理無限長度的 uri, 而既然較舊的 client 只能處理 255 字元以下的 uri, 所以說 server 一定要可以處理 255 字元以內的任何 uri, 超過的話就難說了,那所以這邊也假設 get 受限於 length 255 比較保險。) RFC 2068 3.2.1 http://tools.ietf.org/html/rfc2068#section-3.2.1 > -------------------------------------------------------------------------- < 還有另一個選擇的原因是安全性考量,get 比較不安全,post 比較保險, 但這不是指機制上比較安全,而是可以防呆。我指的是, 如果 get 的 form data set 裡面有 session id, 然後 Alice 把這串 URI 分享給 Bob,那 Bob 就有可能以 Alice 的身份登入。 (當然這只是有可能,但不是常見的情況,因為 session id 基本上是 user agent 跟其他東西混出來的。) (另外,get 跟 post 在機制上一樣不安全,把封包撿一撿什麼都看得到。) > -------------------------------------------------------------------------- < 以上這些是 HTML 4.01 裡面對 get 跟 post 的介紹,但因為受限於 form method 在 html 裡面只有 get 跟 post 兩種,因此有很多不應該屬於這兩者的也被混合一起。 這部分要去看 RFC 2616 第九節,裡面有各個 method 的詳細介紹。 例如上傳圖片照理來說應該是 put。 RFC 2616 第九節 http://tools.ietf.org/html/rfc2068#section-9 這樣可以了嗎? -- Oni devas ami animalojn. Ili estas tiel bongustaj. One should love animals. They are so tasty. 每個人都應該愛動物,他們是如此美味。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.180.46.165

11/19 02:59, , 1F
恩,sorry,幫你推回來
11/19 02:59, 1F

11/19 15:20, , 2F
快爆炸了XD
11/19 15:20, 2F

11/19 18:36, , 3F
standard的建議跟現實有落差,再說如果要那RFC出來說
11/19 18:36, 3F

11/19 18:38, , 4F
我會只取get/post 規格, 應用不會在規格書裡出現, 在實做
11/19 18:38, 4F

11/20 15:19, , 5F
推回來也沒用, 原來的問題是 http 協定的範圍
11/20 15:19, 5F

11/20 15:19, , 6F
應該參考的是 RFC, 而不是 w3c 的 html spec
11/20 15:19, 6F

11/21 19:16, , 7F
我該說的都說了,對得起自己就好,你高興的話照三餐來噓文
11/21 19:16, 7F

11/21 19:16, , 8F
我不介意:)
11/21 19:16, 8F
文章代碼(AID): #1Eneh59X (Web_Design)
討論串 (同標題文章)
文章代碼(AID): #1Eneh59X (Web_Design)