我知道HTTP get和post方法之間的區別(詳見this問題)。
我的問題是爲什麼不總是使用post方法進行AJAX調用,這是安全的。有沒有更快得到要求?是有理由更喜歡那麼後?爲什麼不總是使用HTTP post進行ajax調用?
對於沒有Ajax調用是有原因的 - 共享一個鏈接到相同的URL,但對於AJAX這種說法很不好......
我知道HTTP get和post方法之間的區別(詳見this問題)。
我的問題是爲什麼不總是使用post方法進行AJAX調用,這是安全的。有沒有更快得到要求?是有理由更喜歡那麼後?爲什麼不總是使用HTTP post進行ajax調用?
對於沒有Ajax調用是有原因的 - 共享一個鏈接到相同的URL,但對於AJAX這種說法很不好......
GET請求更小,速度更快;並在客戶端和可能正在使用的任何代理的一部分中利用緩存。
對於預計不會經常更改的數據,GET請求通常非常明智,因爲除非必要,否則GET請求不會被重新發送的機會更大。
但是,對於預期會更頻繁更改的數據,POST確實是更安全的選項,因爲它始終會重新發送到服務器,以確保始終遵守更改。
還有語義問題發揮作用。 POST請求應該只在意圖修改服務器上的數據時使用。
我的問題是,爲什麼不經常使用POST方法AJAX調用
由於RESTful應用程序中它是沒有意義的使用POST謂詞對不上修改狀態行動服務器。在一個RESTful應用程序中,請求如何發出並不重要:它是普通的,AJAX還是機器人。
GET請求通常也更快,並且被瀏覽器緩存。
GET對服務器使用單個請求,對POST使用兩個請求。
根據雅虎的YSlow團隊,當傳輸的內容小於IE的2K限制時,您應該選擇GET。在這裏閱讀更多:http://developer.yahoo.com/performance/rules.html#ajax_get
什麼讓你覺得POST包含2個請求? – Gareth
@Gareth,也許這是他提供的鏈接......? – gdoron
@gdoron TCP數據包與HTTP請求不一樣。任何類型的請求都可以分解爲多個TCP數據包,但大多數(不是全部)瀏覽器[至少使用2個數據包](http://josephscott.org/archives/2009/08/xmlhttprequest-xhr-uses -multiple-packets-for-http-post /)用於AJAX POST。讓我們清楚的是,計數TCP數據包最好是微觀優化,微觀優化很少給出關於您是否應該「總是」做某事的問題的很好答案。 – Gareth
我正在讀加快你的網站有一天回來,他們已經很好地解釋了雅虎的最佳做法,爲什麼我們應該更喜歡得到了後,這裏是後段,供大家參考
使用XMLHttpRequest,POST在瀏覽器中作爲一個兩步過程實現:首先發送標頭,然後發送數據。所以最好使用GET,它只需要一個TCP數據包發送(除非你有很多的cookie)。 IE中的URL最大長度是2K,所以如果發送超過2K的數據,您可能無法使用GET。
一個有趣的副作用是沒有實際發佈任何數據的POST行爲像GET。基於HTTP規範,GET旨在用於檢索信息,所以在您僅請求數據時使用GET(在語義上)是合理的,而不是將數據發送到服務器端存儲。
。詳細請參閱有頁的詳細
第二部分是足以喜歡GET然後帖子,但我不會被說服_follow_的REST標準,它不是更快緩存。是否有其他原因不使用Post方法進行不重要的操作? – gdoron
@gdoron,我個人總是遵循我的應用程序中的REST標準,所以這是我的參數編號1。 –