簡體   English   中英

HttpMethod和HttpRequest的RequestType有什么區別?

[英]What's the difference between HttpMethod and RequestType of HttpRequest?

HttpRequest類定義了兩個屬性:

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

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

Reflector顯示RequestType內部調用HttpMethod 所以你打電話給HttpMethod好一點 實際上我認為RequestType存在的真正原因是為了向后兼容經典ASP。

您可以查看以下文章: -

請求方法:使用telnet發出的HTTP請求。 請求,響應標頭和響應正文將突出顯示。

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

HEAD要求響應與對應於GET請求的響應相同,但沒有響應主體。 這對於檢索在響應頭中編寫的元信息非常有用,而無需傳輸整個內容。

GET請求指定資源的表示。 請注意,GET不應用於導致副作用的操作,例如使用它在Web應用程序中執行操作。 其中一個原因是機器人或爬蟲可以任意使用GET,這不應該考慮請求應該引起的副作用。 請參閱以下安全方法。

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

HTTP服務器至少需要實現GET和HEAD方法[7],並且盡可能實現OPTIONS方法。[引證需要]安全方法

某些方法(例如,HEAD,GET,OPTIONS和TRACE)被定義為安全,這意味着它們僅用於信息檢索,不應更改服務器的狀態。 換句話說,它們不應該具有副作用,除了相對無害的效果,例如日志記錄,緩存,橫幅廣告的提供或遞增網絡計數器。 因此,在不考慮應用程序狀態的上下文的情況下進行任意GET請求應該被認為是安全的。

相比之下,POST,PUT和DELETE等方法適用於可能導致服務器副作用或外部副作用(如金融交易或電子郵件傳輸)的操作。 因此,這些方法通常不適用於符合網絡機器人或網絡爬行器,這些機器人傾向於在不考慮背景或后果的情況下提出請求。

盡管GET請求具有規定的安全性,但實際上它們對服務器的處理在技術上並沒有任何限制,粗心或故意的編程可以很容易(或者更容易,由於缺乏用戶代理預防措施)導致非平凡的變化在服務器上。 不鼓勵這樣做,因為它可能會導致Web緩存,搜索引擎和其他自動代理出現問題,這些代理可能會對服務器進行意外更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM