В чем разница между HttpMethod и RequestType HttpRequest? - PullRequest
24 голосов
/ 28 января 2010

Класс 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 , кажется, указывает только одно из двух возможных значений:

ПОЛУЧИТЬ или ПОСТ


Я проверил случайную выборку глаголов, и оба свойства, кажется, поддерживают все глаголы, и оба возвращают одинаковые значения:

Тестирование:

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

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

Ответы [ 2 ]

25 голосов
/ 28 января 2010

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

0 голосов
/ 08 апреля 2010

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

Способы запроса: 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, на практике их обработка сервером технически не ограничена каким-либо образом, и неосторожное или преднамеренное программирование может так же легко (или более легко, из-за отсутствия мер предосторожности для пользовательского агента) вызвать -тривиальные изменения на сервере. Это не рекомендуется, поскольку это может вызвать проблемы для веб-кэширования, поисковых систем и других автоматических агентов, которые могут вносить непреднамеренные изменения на сервере.

...