表单的 post 方法如何在幕后实际工作

Posted

技术标签:

【中文标题】表单的 post 方法如何在幕后实际工作【英文标题】:how post method of form actually work behind scene 【发布时间】:2015-05-18 13:42:47 【问题描述】:

我同时使用了 get / post me 并了解两者在限制/安全性等方面的差异。

嗯,当我们使用 get 方法时,我们从查询字符串中获取数据,这很好。

现在,发帖:

假设从 one.php,我们传递变量名称,它的形式为 method = "post",我们在 two.php 中使用 $_POST['name'] 获取它,这个名称实际上存储在两者之间这 2 个页面以及它实际来自哪里,并且可以使用 $_POST 访问它?

另外,数据是否有任何机会被黑客入侵/被任何人看到?

谢谢!!

【问题讨论】:

POST 将要处理的数据(例如,从 html 表单)提交到已识别的资源。数据包含在请求的正文中。这可能会导致创建新资源或更新现有资源或两者兼而有之。 @Daan 加上一点额外的解释(可能还有一个链接),这可能会成为一个很好的答案。 【参考方案1】:

值存储在请求中。

HTTP 请求由几个关键组件组成。主要是:

地址 标题 身体

在这种情况下,GET 和 POST 之间的主要区别在于 GET 没有正文。因此,您想要包含在 GET 中的任何数据都需要包含在地址中。然而,一个 POST 确实有一个 Body。它包括该 Body 中值的键/值对。

查看浏览器的调试工具并检查与服务器交互时的请求/响应。对于 POST 请求,您会发现您实际上可以检查这些值。 (当您谈论了解这些请求的“安全性”时,您可能需要考虑这一点......)

这些值不会“存储”在任何特殊的地方。它们的工作方式几乎与在 GET 请求中的工作方式完全相同。它们只是请求格式的另一部分。

【讨论】:

有没有什么结构可以post和get方法,深入理解?

以上是关于表单的 post 方法如何在幕后实际工作的主要内容,如果未能解决你的问题,请参考以下文章

RDD take()方法如何在内部工作?

服务方法如何在 ngOnInit() 内部工作,甚至 ngOnInit() 钩子执行一次?

如何设计一个可以流转审批的表单

Meteor 的反应在幕后是如何工作的?

方法如何在 Ruby 中使用哈希参数?

ORM 如何在幕后工作?另外,在 Java 中拥有持久对象的最佳方法是啥?