Http 将表单POST与查询字符串组合是否有效?

Http 将表单POST与查询字符串组合是否有效?,http,post,query-string,Http,Post,Query String,例如,我知道在大多数MVC框架中,查询字符串参数和表单参数都可用于处理代码,并且通常合并为一组参数(通常以POST为优先)。但是,根据HTTP规范这样做是否有效?假设您要发布到: http://1.2.3.4/MyApplication/Books?bookCode=1234 。。。并提交一些更新,例如更改图书代码为1234的图书名称,您希望处理代码同时考虑bookCode查询字符串参数,以及带有更新图书信息的已发布表单参数。这有效吗?这是个好主意吗 根据HTTP规范它有效吗 这是将军 ht

例如,我知道在大多数MVC框架中,查询字符串参数和表单参数都可用于处理代码,并且通常合并为一组参数(通常以POST为优先)。但是,根据HTTP规范这样做是否有效?假设您要发布到:

http://1.2.3.4/MyApplication/Books?bookCode=1234
。。。并提交一些更新,例如更改图书代码为1234的图书名称,您希望处理代码同时考虑
bookCode
查询字符串参数,以及带有更新图书信息的已发布表单参数。这有效吗?这是个好主意吗

根据HTTP规范它有效吗

这是将军

http_URL的形式没有其他限制。特别是,使用的(即POST、GET、PUT、HEAD等)没有对http URL格式添加任何限制

使用GET方法时,服务器可以考虑请求主体为空。< /P> 使用POST方法时:服务器必须处理请求主体

这是个好主意吗

这取决于你需要做什么。我建议你解释一下GET和POST背后的想法

我可以认为,在某些情况下,在url的查询部分始终具有一些参数(如用户语言)是很方便的。

我知道,在大多数MVC框架中,例如,查询字符串参数和表单参数都将提供给处理代码,并且通常合并到一组参数中(通常以职位优先)

任何主管框架都应支持这一点

这有效吗

是的。HTTP中的POST方法对使用的URI没有任何限制

这是个好主意吗


显然不是,如果您要使用的框架仍然存在线索挑战。否则,这取决于您想要完成什么。主要用例(将数据子集重定向到新的POST目标)是(所有这些都是机械地遵循Mosaic/Netscape的断线),所以这里的考虑主要是理论上的。

在这种情况下,仅仅链接到完整的RFC是没有帮助的。你能在这里引用相关部分吗?没有“相关部分”由于规范没有解决这一特定问题,即规范没有明确说明允许使用查询字符串。相反,答案是根据此处给出的行合理推断的,即POST语义规范没有说明不允许使用查询字符串。事实上,POST URI中的查询字符串是pe完全合法。尽管如此,如果您在RFCs中同时提供查询字符串和
内容类型:application/x-www-form-urlencoded
正文,粗略地看,我找不到任何与优先级相关的内容。我能找到的唯一一件事似乎是一种合理但习惯的实现定义行为,最好在以下内容中描述:“请求主体参数优先于r.Form中的URL查询字符串值”。除非我找不到其他规范,否则前面广泛观察到的行为可能是一个错误的假设,尽管作为服务器,显然可以合理地选择将查询解释为应用于(或作为其一部分)主体应用于子资源时所操作的资源,例如由
POST
创建的子资源。因此,两者都可能包含一个名称相同的密钥,不会发生冲突,因为每个密钥都在不同实体的范围内。HTTP RFC-2616已被新文档淘汰,这些文档对inte的最佳实践进行了详细说明rnet和澄清了一些要点,但在这个RFC集合中,似乎没有任何内容记录,然后不允许使用POST方法请求查询参数。特别是我发现这些要点是相关的:,
http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]