我是网络编程的新手,只是想知道将数据从一个页面发送到另一个页面的GET和POST方法。

据说GET方法比POST快,但我不知道为什么。 我能找到的一个原因是GET只能占用255个字符? 还有其他原因吗?请有人向我解释。

有帮助吗?

解决方案

速度并不高。有很多情况下POST更适用。例如,搜索引擎将索引GET URL,浏览器可以将它们加入书签并使它们显示在历史记录中。因此,如果您执行基于GET请求修改数据库等操作,则可能会有害,因为某些机器人也可能会遍历该URL。

另一种情况可能是安全问题。如果您使用GET发布凭据,它将列在浏览器历史记录和服务器日志文件中。

其他提示

关于http post的另一件事是,当使用http header Expect:100-Continue 时,它可以是2个调用。第一个浏览器使用“ HTTP 100 Continue”发送http帖子标题和服务器回复。当浏览器收到此消息时,它会发送实际的正文。

http://omaralzabir.com/atlas_2__http_post_is_slower_and_it_s_default_in_atlas/

我认为这是作者正在寻找的答案。

HTTP中存在一些关于GET和POST的误解。有一个主要的区别,GET必须是幂等的,而POST不一定是。这意味着GET不会产生任何副作用,即我可以多次向Web应用程序发送GET(想想多次按Ctrl + R或F5)并且请求将是“安全的”

我不能用POST做,POST可能会改变服务器上的数据。例如,如果我在网上订购一个项目,那么该项目应该添加POST,因为服务器上的状态已更改,我添加的项目数量增加了1.如果我使用POST执行此操作并点击刷新在浏览器中,浏览器警告我,如果我使用GET进行操作,浏览器将只发送请求。

在服务器上,GET vs POST是纯粹的惯例,即作为开发人员,我应该确保在服务器上对POST进行编码,以便重复调用。有很多方法可以做到这一点,但这是另一个问题。

要实际回答问题,如果我使用GET或POST执行相同的任务,则没有性能差异。

您可以阅读RFC( http://www.w3.org/Protocols/ rfc2616 / rfc2616.html )了解更多详情。

查看http协议,POST或GET应该同样容易且快速解析。我认为,没有性能差异。

查看原始HTTP标头

http GET

GET /index.html?userid=joe&password=guessme HTTP/1.1
Host: www.mysite.com
User-Agent: Mozilla/4.0

http POST

POST /login.jsp HTTP/1.1
Host: www.mysite.com
User-Agent: Mozilla/4.0
Content-Length: 27
Content-Type: application/x-www-form-urlencoded

userid=joe&password=guessme

从我的角度来看,在比较GET和POST时不应考虑性能。

您应该将GET视为“要去的地方”,将POST视为“做某事”。例如,应使用GET提交搜索表单,因为搜索结果页面是“地点”。并且用户将要将其加入书签或在以后从其历史记录中检索它。如果您使用POST提交表单,则用户只能通过再次提交表单来重新创建页面。另一方面,如果您要执行诸如单击删除按钮之类的操作,则不希望使用GET提交此操作,因为只要用户返回到URL,操作就会重复。

2016年的几美分。

我正在创建一个简单的消息系统。起初我使用POST来接收新警报。在jQuery中我有:

$.post('/a/alerts', 'stamp=' + STAMP, function(result)
{
});

在PHP中,我使用了$ _POST ['stamp']。即使是来自localhost,我也为这样的每个请求 90-100 ms 。 我只是改变了:

$.get('/a/alerts?stamp=' + STAMP, function(result)
{
});

并在PHP中切换到$ _GET ['stamp']。所以变化不到1分钟。现在每个请求都需要 30-40 ms

所以 GET的速度可以是POST的两倍。当然并不总是如此,但对于少量数据我总是得到相同的结果。

GET 略快,因为值在标头中发送,与 POST 不同在请求正文中,采用内容类型指定的格式。

通常内容类型是application / x-www-form-urlencoded,因此请求正文使用与查询字符串相同的格式:

参数=值&安培;还=另一 当您在表单中使用文件上载时,您可以使用multipart / form-data编码,它具有不同的格式。它更复杂。

我同意其他答案,但没有提到可以缓存GET请求,而POST请求永远不会被缓存。我认为这是一些GET请求执行速度更快的主要原因。 (粗略的,这意味着有时候实际上没有发送任何请求。因此实际上并不是GET请求更快,而是浏览器的缓存。)

HTTP方法:GET与POST: http://www.w3schools.com/tags/ ref_httpmethods.asp

POST会增加你的标题,只是增加标题,但差异应该可以忽略不计,所以我不明白为什么这应该是一个问题。

请记住,说HTTP的正确方法是仅对操作使用GET,对数据使用POST。您没有必要,但您也不希望Google机器人可以插入,删除或操作仅供人类处理的数据,因为它遵循它找到的链接

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top