HTTP POST请求中的URL参数是否正常?

时间:2011-07-18 05:32:14

标签: html forms post httpwebrequest get

我正在处理一些HTML表单,我只是想知道在action属性中使用URL参数是否可以,即使method属性是POST?

<form action="index.php?somefield=someval" method="post">
    <input name="anotherfield" value="anothervalue" type="text" />
    <input type="submit" />
</form>

嗯,这很好用,我可以在我的回发页面中获取所有字段及其值,但我想知道我是否违反了一些规则,标准或者这样做的东西?如果可以的话,请展示一些可以证明它没问题的资源,因为我无法在W3.org中找到它。

4 个答案:

答案 0 :(得分:1)

正如规范RFC1866 section 8.2.3所述:

  

如果与表单处理相关的服务有副作用   效果(例如,修改数据库或订阅   服务),方法应该是'POST'。

     

处理其操作URL为HTTP URL且方法为的表单   'POST',用户代理使用。进行HTTP POST事务   操作URI和类型为'application / x-www-form-的消息体   urlencoded'格式如上。用户代理应该显示   来自HTTP POST交互的响应就像显示它一样   来自上面的HTTP GET的响应。

发送POST请求时,表单数据实际上是在请求正文中发送的,而不是在标头中发送的。因此请求URL(表单的action)与请求正文不同。

在后台发送到服务器的数据如下所示:

POST /path/script.php?somefield=somevar HTTP/1.1
User-Agent: User-Agent-String/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 32

home=Cosby&favorite+flavor=flies

答案 1 :(得分:0)

只要您的代码一致且有效,您应该没问题。只有在你有理由的情况下才能分离参数,然后将其记录下来以便明白为什么以后出现的任何人。

当然要测试它以确保它有效。它可能不标准,但如果你有某些理由没有什么可说的,你就做不到。

答案 2 :(得分:0)

它有效,但有时可能令人困惑。如果您的somefield = someval与您的表单相关,那么最好这样做:

<form action="index.php" method="POST">
    <input name="somefield" value="someval" type="hidden" />
    <input name="anotherfield" value="anothervalue" type="text" />
    <input type="submit" />
</form>

但是如果你的somefield = someval与表单无关,那么你应该将它保持为GET,这样它就不会成为表单数据的一部分。

答案 3 :(得分:-1)

您可以使用$ _REQUEST [“name”]从get或post模式获取值。 Check out 了解更多详情