我可以使用HTTP HEAD请求发布表单数据吗?

时间:2011-11-15 18:31:04

标签: http http-headers html-form

我可以使用GET请求提交HTML表单数据。如果HEAD请求在功能上与GET相同,不包括响应中的内容,那么我是否应该能够使用HEAD提交HTML表单数据?

HTTP请求的第一行可能如下所示:

HEAD /processdata.php?first=john&last=doe&email=john@doe.com HTTP/1.1

RFC 2616说:

The HEAD method is identical to GET except that the server MUST NOT return a 
message-body in the response.

(几乎是this question的欺骗,除了我想知道我是否可以提交HTML表单数据。)

根据受欢迎的规格做出回应。 TIA。

4 个答案:

答案 0 :(得分:2)

您是否对请求解析器的HTML,HTTP或服务器实现有疑问?

如果您正在谈论HTML,答案是“否”。 HTML仅支持GET或POST。如果您尝试创建类似

的表单
<form method="HEAD" action="http://ard.de">

Firefox忽略method属性并将请求发送为GET。

如果您在谈论HTTP,答案是“是”。您可以使用查询字符串发送请求,例如GET-HTML-FORM http://ard.de?param1=value&param2=value

没有指定,但正如我所理解的HTTP规范,也不禁止在请求正文中发送参数(如POST-HTML-FORM通常那样)。讨论了here

如果您正在谈论服务器端解析器,则必须提及它。 J2EE 6 servlet堆栈实现总是解析查询字符串,但它仅针对POST请求解析主体(甚至不用于PUT请求)。

答案 1 :(得分:1)

是的,HEAD请求可以带参数。但是,RFC 2616还说HEAD或GET请求应该是幂等的,也就是说,对这种请求允许的副作用有非常严格的限制。

GET或HEAD请求只应用于检索数据,而不是用于在服务器上存储内容。

答案 2 :(得分:1)

除了没有携带有效载荷的响应外,HEAD与GET相同。

所以是的,你可以通过GET发送任何你想发送的内容。

答案 3 :(得分:0)

我想你可以,但是HttpRequest实现不会帮助你解析请求的主体。一些代理人可能会阻止这样一个可疑的&#34;一揽子贷款。

换句话说,这是可能的,但不符合标准。

相关问题