26

HttpRequest类定义了两个属性:

Http方法

获取客户端使用的 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

我什么时候应该使用另一个?

4

2 回答 2

27

反射器显示内部RequestType调用HttpMethod。所以你打电话会稍微HttpMethod好一点。实际上,我认为RequestType存在的真正原因是与经典 ASP 的向后兼容性。

于 2010-01-28T20:44:48.937 回答
-4

您可以查看以下文章:-

请求方法:使用 telnet 发出的 HTTP 请求。请求、响应标头和响应正文被突出显示。

HTTP 定义了八种方法(有时称为“动词”),指示要对已识别资源执行的所需操作。这个资源代表什么,无论是预先存在的数据还是动态生成的数据,都取决于服务器的实现。通常,资源对应于驻留在服务器上的文件或可执行文件的输出。

HEAD 请求与对应于 GET 请求的响应相同的响应,但没有响应主体。这对于检索写入响应标头中的元信息很有用,而无需传输整个内容。

GET 请求指定资源的表示。请注意,GET 不应用于会导致副作用的操作,例如在 Web 应用程序中使用它来执行操作。这样做的一个原因是 GET 可能被机器人或爬虫任意使用,它们不需要考虑请求应该引起的副作用。请参阅下面的安全方法。

POST 将要处理的数据(例如,从 HTML 表单)提交到标识的资源。数据包含在请求的正文中。这可能导致创建新资源或更新现有资源或两者兼而有之。PUT 上传指定资源的表示。DELETE 删除指定的资源。TRACE 回显收到的请求,以便客户端可以看到中间服务器在请求中添加或更改了哪些内容。OPTIONS 返回服务器对指定 URL 支持的 HTTP 方法。这可用于通过请求“*”而不是特定资源来检查 Web 服务器的功能。CONNECT 将请求连接转换为透明 TCP/IP 隧道,通常是为了通过未加密的 HTTP 代理促进 SSL 加密通信 (HTTPS)。

HTTP 服务器至少需要实现 GET 和 HEAD 方法[7],并且尽可能地实现 OPTIONS 方法。[需要引用] 安全方法

某些方法(例如,HEAD、GET、OPTIONS 和 TRACE)被定义为安全的,这意味着它们仅用于信息检索,不应更改服务器的状态。换句话说,它们不应该有副作用,除了相对无害的影响,如日志记录、缓存、横幅广告的服务或增加网络计数器。因此,在不考虑应用程序状态上下文的情况下发出任意 GET 请求应该被认为是安全的。

相比之下,诸如 POST、PUT 和 DELETE 之类的方法旨在用于可能对服务器造成副作用或诸如金融交易或电子邮件传输等外部副作用的操作。因此,此类方法通常不被符合标准的网络机器人或网络爬虫使用,它们倾向于在不考虑上下文或后果的情况下提出请求。

尽管 GET 请求具有规定的安全性,但实际上服务器对它们的处理在技术上不受任何限制,粗心或故意的编程很容易(或更容易,由于缺乏用户代理预防措施)导致不平凡的变化在服务器上。不鼓励这样做,因为它可能会导致 Web 缓存、搜索引擎和其他自动化代理出现问题,这可能会在服务器上进行意外更改。

于 2010-04-08T06:36:59.800 回答