[http] POST和GET有什麼區別?


Answers

GET不同, POST通常在請求的主體中具有相關信息。 (一個GET不應該有一個主體,所以除了cookie之外,唯一能夠傳遞信息的地方就在URL中。)除了保持URL相對更清晰外, POST還可以讓你發送更多信息(因為URL的長度有限,所有實際用途),並且可以發送幾乎任何類型的數據(例如,文件上傳表單不能使用GET - 他們必須使用POST和特殊的內容類型/編碼)。

除此之外, POST意味著請求會改變某些內容,而不應該重做。 這就是為什麼有時您會看到您的瀏覽器詢問您是否要在點擊“返回”按鈕時重新提交表單數據。

另一方面, GET應該是冪等的 - 意味著你可以做一百萬次,服務器每次都會做同樣的事情(並且顯示基本相同的結果)。

Question

這個問題在這裡已經有了答案:

我最近才開始介入PHP / AJAX / jQuery,在我看來,這些技術的重要組成部分是POSTGET

首先, POSTGET什麼區別? 通過實驗,我知道GET將返回變量及其值附加到URL字符串

website.com/directory/index.php?name=YourName&bday=YourBday

POST不。

那麼,這是唯一的區別還是有使用其中一個或另一個的特定規則或約定?

其次,我還在PHP之外看到了POSTGET :也是在AJAX和jQuery中。 POSTGET如何在這3個之間有所不同? 他們是相同的想法,相同的功能,不同的使用方式?




雖然不是對差異的描述,但當選擇正確的方法時,以下幾點需要考慮。

  • GET請求可以被瀏覽器緩存,這在使用ajax時可能是一個問題(或者有益處)。
  • GET請求向用戶公開參數(POST也行,但它們不太明顯)。
  • POST可以將更多的信息傳遞給服務器,並且可以具有幾乎任何長度。



POST&GET(當它們與AJAX一起使用時)之間唯一的“大”差異是GET提供的URL,它們的長度有限(因為URL長度無限)。




如果您正在以RESTfully方式工作,那麼GET應該用於您只能獲取數據的請求,並且POST應該用於您發生某些事情的請求。

一些例子:

  • 獲取顯示特定SO問題的頁面

  • 發表評論

  • 點擊“添加到購物車”按鈕發送POST請求。




Links