Подтвердить что ты не робот

Какая разница между HttpMethod и RequestType 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

и когда я должен использовать один над другим?

4b9b3361

Ответ 1

Reflector показывает, что RequestType вызывает HttpMethod внутренне. Таким образом, вам когда-либо было немного лучше позвонить HttpMethod. На самом деле, я думаю, что реальная причина RequestType существует для обратной совместимости с классическим ASP.

Ответ 2

Вы можете проверить статью ниже: -

Способы запроса: HTTP-запрос, выполненный с использованием telnet. Выделены запрос, заголовки ответов и тело ответа.

HTTP определяет восемь методов (иногда называемых "глаголами" ), указывающих желаемое действие, которое должно выполняться на идентифицированном ресурсе. Что представляет этот ресурс, независимо от того, будут ли существовать ранее существующие данные или данные, которые генерируются динамически, зависит от реализации сервера. Часто ресурс соответствует файлу или выходу исполняемого файла, находящегося на сервере.

ГОЛОВЫ   Запросит ответ, идентичный тому, который соответствует запросу GET, но без тела ответа. Это полезно для извлечения метаинформации, написанной в заголовках ответов, без переноса всего содержимого.

GET   Запросит представление указанного ресурса. Обратите внимание, что GET не следует использовать для операций, которые вызывают побочные эффекты, например, для использования в веб-приложениях. Одна из причин этого заключается в том, что GET может использоваться произвольно роботами или искателями, которые не должны учитывать побочные эффекты, которые должен вызвать запрос. См. Безопасные методы ниже.

POST   Отправляет данные, подлежащие обработке (например, из HTML-формы) в идентифицированный ресурс. Данные включены в тело запроса. Это может привести к созданию нового ресурса или обновлений существующих ресурсов или того и другого. ПОЛОЖИЛ   Загружает представление указанного ресурса. УДАЛИТЬ   Удаляет указанный ресурс. TRACE   Отсылает обратно полученный запрос, чтобы клиент мог видеть, какие промежуточные серверы добавляют или меняют запрос. ОПЦИИ   Возвращает HTTP-методы, поддерживаемые сервером для указанного URL. Это можно использовать для проверки функциональности веб-сервера путем запроса "*" вместо определенного ресурса. CONNECT   Преобразует соединение с запросом в прозрачный туннель TCP/IP, как правило, для упрощения SSL-шифрования (HTTPS) через незашифрованный HTTP-прокси. [5] PATCH   Используется для частичной модификации ресурса. [6]

HTTP-серверы должны внедрять по крайней мере методы GET и HEAD [7] и, когда это возможно, также метод OPTIONS. [править] Безопасные методы

Некоторые методы (например, HEAD, GET, OPTIONS и TRACE) определяются как безопасные, что означает, что они предназначены только для извлечения информации и не должны изменять состояние сервера. Другими словами, они не должны иметь побочных эффектов, помимо относительно безвредных эффектов, таких как ведение журнала, кеширование, подача рекламных баннеров или увеличение веб-счетчика. Поэтому произвольные запросы GET без учета контекста состояния приложения должны считаться безопасными.

В отличие от этого, такие методы, как POST, PUT и DELETE, предназначены для действий, которые могут вызывать побочные эффекты либо на сервере, либо внешние побочные эффекты, такие как финансовые транзакции или передача электронной почты. Поэтому такие методы обычно не используются в соответствии с веб-роботами или веб-сканерами, которые склонны делать запросы без учета контекста или последствий.

Несмотря на предписанную безопасность запросов GET, на практике их обработка сервером никоим образом не ограничена техникой, а небрежное или преднамеренное программирование может быть столь же легко (или, проще, из-за отсутствия мер предосторожности для пользователя) -ривиальные изменения на сервере. Это обескураживает, поскольку это может вызвать проблемы для веб-кеширования, поисковых систем и других автоматизированных агентов, что может привести к непредвиденным изменениям на сервере.