2010-01-28 59 views
22

HttpRequest類定義了兩個屬性:HttpMethod和HttpRequest的RequestType有什麼區別?

HttpMethod

獲取HTTP數據傳送方法(如GET,POST,HEAD或)由客戶端使用。

public string HttpMethod { get; } 

客戶端使用的HTTP數據傳輸方法。

RequestType

獲取或設置HTTP數據傳輸方法(GET或POST)由客戶端使用。

public string RequestType { get; set; } 

表示客戶端發送的HTTP調用類型的字符串。

這兩個屬性有什麼區別?我什麼時候想要使用一個?檢查客戶端使用什麼數據傳輸方法的正確方法是什麼?

文檔表示列舉HTTPMethod將返回期間使用的任何動詞:

如GET,POST,或HEAD

同時的RequestType的文件似乎表明只有一個有兩種可能的值:

GET或POST


我與動詞的隨機抽樣測試,這兩個屬性似乎支持所有動詞,都返回相同的值:

測試:

Client Used HttpMethod RequestType 
GET   GET   GET 
POST   POST   POST 
HEAD   HEAD   HEAD 
CONNECT  CONNECT  CONNECT 
MKCOL   MKCOL   MKCOL 
PUT   PUT   PUT 
FOOTEST  FOOTEST  FOOTEST 

什麼區別:

  • HttpRequest.HttpMethod
  • HttpRequest.RequestType

什麼時候應該使用另一個?

回答

23

Reflector顯示RequestType在內部調用HttpMethod。所以你有點更好關閉HttpMethod。其實我認爲RequestType存在的真正原因是爲了與傳統ASP向後兼容。

+0

所以你說** HttpMethod **是首選機制,但它們在其他方面是相同的。 – 2010-01-28 21:09:40

+0

非常,是的。 – 2010-01-29 08:24:25

-3

您可以檢查以下文章: -

索取方法:使用telnet HTTP請求做出。請求,響應標題和響應正文被突出顯示。

HTTP定義了八種方法(有時稱爲「動詞」),指示要在標識的資源上執行的所需操作。此資源代表的是預先存在的數據還是動態生成的數據,取決於服務器的實現。通常,資源對應於駐留在服務器上的可執行文件或輸出。

HEAD 要求響應與對應於GET請求的響應相同,但沒有響應主體。這對於檢索寫在響應標題中的元信息是有用的,而不必傳輸整個內容。

GET 請求指定資源的表示形式。請注意,不應將GET用於導致副作用的操作,例如將其用於在Web應用程序中執行操作。其中一個原因是GET可能被機器人或抓取工具任意使用,而不需要考慮請求應該導致的副作用。請參閱以下安全方法。

POST 將要處理的數據(例如,從HTML表單)提交到所標識的資源。數據包含在請求的正文中。這可能會導致創建新資源或更新現有資源或兩者。 PUT 上傳指定資源的表示形式。 刪除 刪除指定的資源。 TRACE 回顯接收到的請求,以便客戶端可以看到請求中添加或更改了哪些中間服務器。 選項 返回服務器支持指定URL的HTTP方法。這可以用來通過請求'*'而不是特定資源來檢查Web服務器的功能。 CONNECT 將請求連接轉換爲透明的TCP/IP隧道,通常通過未加密的HTTP代理來實現SSL加密通信(HTTPS)[5]。 修補程序 用於對資源進行部分修改。[6]

HTTP服務器都需要實現至少GET和HEAD方法[7]和,只要有可能,也OPTIONS方法。[編輯] 安全方法

一些方法(例如,HEAD,GET ,OPTIONS和TRACE)被定義爲安全的,這意味着它們僅用於信息檢索,並且不應該改變服務器的狀態。換句話說,他們不應該有副作用,除了相對無害的影響,如日誌記錄,緩存,橫幅廣告投放或增加網頁計數器。因此,不考慮應用程序狀態的上下文而進行任意的GET請求應該被認爲是安全的。

相比之下,諸如POST,PUT和DELETE等方法適用於可能對服務器造成副作用的操作,或者諸如金融交易或電子郵件傳輸等外部副作用。因此,這些方法通常不會被符合的網絡機器人或網絡爬蟲所使用,這些網絡機器人或網絡爬蟲往往會提出請求而不考慮上下文或後果。

儘管GET請求具有規定的安全性,但實際上它們在服務器上的處理在技術上沒有任何限制,粗心或故意編程可以很容易(或者更容易,由於缺少用戶代理預防措施)導致服務器上的重要更改。這是令人沮喪的,因爲它可能會導致Web緩存,搜索引擎和其他自動代理的問題,這可能會導致服務器發生無意的更改。

+1

您應該添加鏈接並僅包含重要部分 – 2012-12-25 17:32:31

+0

此答案不回答原始問題 - 它只是談論一般的HTTP方法。 – Oliver 2017-01-20 11:46:15