2010-01-28 28 views
22

La clase HttpRequest define dos propiedades:¿Cuál es la diferencia entre HttpMethod y RequestType of HttpRequest?

HttpMethod:

Obtiene el método de transferencia de datos de HTTP (tales como GET, POST, o la cabeza) utilizados por el cliente.

public string HttpMethod { get; } 

El método de transferencia de datos HTTP utilizado por el cliente.

y RequestType:

Obtiene o establece el método de transferencia de datos HTTP (GET o POST) utilizado por el cliente.

public string RequestType { get; set; } 

Cadena que representa el tipo de invocación HTTP enviado por el cliente.

¿Cuál es la diferencia entre estas dos propiedades? ¿Cuándo quisiera usar uno sobre el otro? ¿Cuál es el adecuado para inspeccionar para ver qué método de transferencia de datos utilizó el cliente?

La documentación indica que HTTPMethod volverá lo verbo se utilizó:

como GET, POST, o la cabeza

mientras que la documentación sobre RequestType parece indicar sólo una de dos valores posibles:

GET o POST


He probado con un muestreo aleatorio de los verbos, y ambas propiedades parecen apoyar todos los verbos, y ambos devuelven los mismos valores:

prueba:

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 

Cuál es el diferencia entre:

  • HttpRequest.HttpMethod
  • HttpRequest.RequestType

y cuándo debo usar uno sobre el otro?

Respuesta

23

Reflector muestra que RequestType llama a HttpMethod internamente. Así que usted es muy ligeramente mejor llamando al HttpMethod. De hecho, creo que la verdadera razón por la que RequestType existe es por compatibilidad con versiones anteriores de ASP clásico.

+0

Así que estás diciendo ** HttpMethod ** es el mecanismo preferido, pero son por lo demás idénticos. –

+0

Bastante, sí. –

-3

Usted puede comprobar a continuación el artículo: -

métodos de petición: hizo una petición HTTP usando telnet. La solicitud, los encabezados de respuesta y el cuerpo de respuesta están resaltados.

HTTP define ocho métodos (a veces denominados "verbos") que indican la acción deseada que se realizará en el recurso identificado. Lo que este recurso representa, ya sea que los datos preexistentes o los datos que se generan dinámicamente, dependan de la implementación del servidor. A menudo, el recurso corresponde a un archivo o la salida de un ejecutable que reside en el servidor.

CABEZA Solicita la respuesta idéntica a la que correspondería a una solicitud GET, pero sin el cuerpo de respuesta. Esto es útil para recuperar metainformación escrita en encabezados de respuesta, sin tener que transportar todo el contenido.

OBTENER Solicita una representación del recurso especificado. Tenga en cuenta que GET no debe usarse para operaciones que causan efectos secundarios, como su uso para realizar acciones en aplicaciones web. Una razón para esto es que GET puede ser usado arbitrariamente por robots o rastreadores, que no deberían tener que considerar los efectos secundarios que una solicitud debería causar. Vea los métodos seguros a continuación.

POST Envía los datos a procesar (por ejemplo, desde un formulario HTML) al recurso identificado. Los datos están incluidos en el cuerpo de la solicitud. Esto puede dar como resultado la creación de un nuevo recurso o las actualizaciones de los recursos existentes o ambos. PUT Carga una representación del recurso especificado. ELIMINAR Elimina el recurso especificado. TRACE Hace eco de la solicitud recibida, de modo que un cliente pueda ver qué servidores intermedios están agregando o cambiando en la solicitud. OPCIONES Devuelve los métodos HTTP que el servidor admite para la URL especificada. Esto se puede usar para verificar la funcionalidad de un servidor web al solicitar '*' en lugar de un recurso específico. CONNECT Convierte la conexión de solicitud a un túnel transparente TCP/IP, por lo general para facilitar la comunicación SSL-encrypted (HTTPS) a través de un proxy HTTP no cifrado. [5] PATCH Se utiliza para aplicar modificaciones parciales a un recurso. [6] se requieren

servidores HTTP para implementar al menos los métodos GET y HEAD [7] y, siempre que sea posible, también el método OPTIONS. [citación necesaria] métodos seguros

Algunos métodos (por ejemplo, HEAD, GET , OPCIONES y RASTREO) se definen como seguros, lo que significa que están destinados solo a la recuperación de información y no deben cambiar el estado del servidor. En otras palabras, no deberían tener efectos secundarios, más allá de efectos relativamente inofensivos como el registro, el almacenamiento en caché, la publicación de anuncios publicitarios o el incremento de un contador web. Por lo tanto, la realización de solicitudes GET arbitrarias sin tener en cuenta el contexto del estado de la aplicación debe considerarse segura.

Por el contrario, los métodos como POST, PUT y DELETE están destinados a acciones que pueden causar efectos secundarios en el servidor, o efectos secundarios externos como transacciones financieras o transmisión de correo electrónico. Tales métodos, por lo tanto, no se usan habitualmente para conformar robots web o rastreadores web, que tienden a realizar solicitudes sin tener en cuenta el contexto o las consecuencias.

A pesar de la seguridad prescrito de peticiones GET, en la práctica su manipulación por parte del servidor no está limitado técnicamente en modo alguno, y la programación descuidada o deliberada puede con la misma facilidad (o más fácilmente, debido a la falta de precauciones de agente de usuario) causa cambios no triviales en el servidor. Esto se desaconseja, ya que puede causar problemas para el almacenamiento en caché, los motores de búsqueda y otros agentes automáticos en la Web, lo que puede ocasionar cambios involuntarios en el servidor.

+1

Debe agregar el enlace y qute solo las partes importantes –

+0

Esta respuesta no responde a la pregunta original, solo habla sobre los métodos HTTP en general. – Oliver

Cuestiones relacionadas