【问题标题】:POST data with HEAD Request使用 HEAD 请求发布数据
【发布时间】:2011-05-30 13:37:24
【问题描述】:

是否可以使用 HEAD 请求发送 POST 数据?

【问题讨论】:

    标签: http-headers head


    【解决方案1】:

    不,HEAD 请求与 POST 请求不同。 HEAD 请求不接受发布数据。来自HTTP specification section 9.4

    HEAD 方法与 GET 相同,只是服务器不能在响应中返回消息体。响应 HEAD 请求的 HTTP 标头中包含的元信息应该与响应 GET 请求发送的信息相同。此方法可用于获取有关请求所隐含的实体的元信息,而无需传输实体主体本身。这种方法通常用于测试超文本链接的有效性、可访问性和最近的修改。

    由于 GET 请求不包含 post 数据,因此 HEAD 请求也不包含。

    【讨论】:

    • 我没有找到禁止在 GET 请求中发送请求正文(也称为 POST 数据)的位置。未指定,但未明确禁止。
    • @30thh:参见section 4.3,“如果请求方法的规范(第 5.1.1 节)不允许在要求。”你会发现 GET 请求不允许使用 entity-body。
    • 除了服务器不能在响应中返回消息体之外,是否有与 POST 相同的不同方法?比如GET变成HEAD,POST变成HOST。但是不存在 HOST 方法。也许最合适的方法是 PUT。但是响应 PUT 请求的 HTTP 标头中包含的元信息与响应 POST 请求而发送的信息不同。此外,Web 服务器处理 PUT 请求的方式也不同。
    【解决方案2】:

    使用Arduino经常使用这种方式发送数据:

      ArduinoClient.print("HEAD /wsendtemp.php?c1=");
      ArduinoClient.print(temp[0]);
      ArduinoClient.print("&time=");
      ArduinoClient.print(micros());
    
      ArduinoClient.println(" HTTP/1.1"); // attenzione allo spazio
      //ArduinoClient.println("Host: 127.0.0.1");
      ArduinoClient.println("Host: www.mcmajan.com");//184,173,194,61
      ArduinoClient.println("User-Agent:Arduino");
      ArduinoClient.println("Accept: text/html");
      ArduinoClient.println("Connection: close");
      ArduinoClient.println();
      ArduinoClient.stop();
    

    【讨论】:

      猜你喜欢
      • 2014-06-01
      • 2019-10-20
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多