【问题标题】:What's the difference between HttpMethod and RequestType of HttpRequest?HttpRequest的HttpMethod和RequestType有什么区别?
【发布时间】:2011-01-10 12:56:40
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net http iis httphandler httprequest


    【解决方案1】:

    Reflector 表明 RequestType 在内部调用 HttpMethod。所以你稍微最好打电话给HttpMethod。其实我认为RequestType 存在的真正原因是为了向后兼容经典的 ASP。

    【讨论】:

    • 所以你说 HttpMethod 是首选机制,但它们在其他方面是相同的。
    • 值得注意的是,在 ASP.NET Core 中,RequestType 不再是 HttpRequest 类的属性。所以使用HttpMethod(现在只是Method)可能会让你在从标准移植到核心时更容易。
    【解决方案2】:

    您可以查看以下文章:-

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

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

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

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

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

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

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

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

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

    【讨论】:

    • 您应该添加链接并仅列出重要部分
    • 这个答案没有回答原始问题 - 它只是一般地谈论 HTTP 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 2012-01-02
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    相关资源
    最近更新 更多