【发布时间】:2010-12-24 18:48:49
【问题描述】:
为什么在 AJAX 中有 GET 和 POST 请求,因为它不会影响页面 URL?由于数据没有反映到页面 URL,因此通过 AJAX 中的 GET 传递敏感数据有什么区别?
【问题讨论】:
-
数据通过GET方式反映在页面URL中。看看 TCP/IP 监视器发生了什么,甚至只是 Firefox 的 Header Monitor 插件。
为什么在 AJAX 中有 GET 和 POST 请求,因为它不会影响页面 URL?由于数据没有反映到页面 URL,因此通过 AJAX 中的 GET 传递敏感数据有什么区别?
【问题讨论】:
您应该根据您对 Web 服务的要求使用正确的 HTTP 动词。
在处理 Collection URI 时,例如:http://example.com/resources/
GET:列出集合的成员,并附上其成员 URI,以便进一步导航。例如,列出所有待售汽车。
PUT:含义定义为“用另一个集合替换整个集合”。
POST:在集合中创建一个新条目,其中 ID 由集合自动分配。创建的 ID 通常包含在此操作返回的数据中。
DELETE:含义定义为“删除整个集合”。
在处理 Member URI 时,例如:http://example.com/resources/7HOU57Y
GET:检索以适当的 MIME 类型表示的集合的寻址成员的表示。
PUT:更新集合的寻址成员或使用指定的 ID 创建它。
POST:将被寻址的成员本身视为一个集合,并为其创建一个新的下属。
DELETE:删除集合的寻址成员。
来源:Wikipedia
【讨论】:
好吧,对于 GET,您仍然有 url 长度限制。除此之外,服务器对 POST 和 GET 请求的不同处理是完全可以想象的;因此需要能够指定您正在执行的请求。
【讨论】:
is_ajax 标志就足够了。最好有这样的选择而不是没有。
GET 和POST 之间的另一个区别是浏览器中处理缓存的方式。 POST 响应永远不会被缓存。 GET 可能会也可能不会根据响应标头中指定的缓存规则进行缓存。
【讨论】:
拥有它们的两个主要原因:
GET 请求对大小有一些相当严格的限制; POST 通常能够包含更多信息。
后端可能需要GET 或POST,具体取决于其设计方式。我们需要灵活地执行GET(如果后端需要)或POST(如果这是它所期望的)。
【讨论】:
这只是为了尊重 http 协议的规则。
Get - 调用必须是幂等的。这意味着如果您多次调用它,您将得到相同的结果。它不打算更改基础数据。您可以将其用于搜索框等。
Post - 调用不是幂等的。允许对基础数据进行更改,因此可以在 create 方法中使用。如果您多次调用它,您将创建多个条目。
【讨论】:
您通常向 AJAX 脚本发送参数,它会根据这些参数返回数据。它的工作方式就像具有 method="get" 或 method="post" 的表单。使用 GET 方法时,参数在查询字符串中传递。使用 POST 方法时,参数在 post body 中发送。
一般来说,如果您的参数字符很少且不包含敏感信息,那么您可以通过 GET 方法发送它们。敏感数据(例如密码)或长文本(例如 8000 个字符长的个人简历)最好通过 POST 方法发送。
【讨论】:
GET)施加了很大的限制,HTTP 规范 IIRC 也是如此。您可以为您的声明发布参考,而他们没有?
谢谢.. 我主要使用 Ajax 的 GET 方法,到目前为止我没有遇到任何问题,除了以下问题:
如果使用相同的 GET 值,Internet Explorer(与 Firefox 和 Google Chrome 不同)缓存 GET 调用。
因此,使用 Ajax GET 的某个时间间隔可以显示相同的结果,除非您更改 URL 并为每个 Ajax GET 使用不相关的随机数。
【讨论】:
其他人已经涵盖了要点(上下文/幂等性和大小),但我将添加另一个:加密。如果您使用 SSL 并想加密您的输入参数,则需要使用 POST。
【讨论】:
我们在Ajax中使用GET方法时,只发送字段值的内容,而不发送内容的格式。例如,在 GET 方法的情况下,文本区域中的内容只是添加到 URL 中(没有换行符)。在 POST 方法中情况并非如此。
【讨论】: