为什么要用HTTP POST或DELETE来删除,而不是GET?

 2023-02-17    345  

问题描述

我一直在Microsoft的ASP.NET MVC教程中工作,最终在此页面

教程-32-cs.aspx

为什么要用HTTP POST或DELETE来删除,而不是GET?

以下语句是在此页面底部的:

通常,您不想在调用修改Web应用程序状态的操作时执行HTTP GET操作.执行删除时,您要执行HTTP帖子,或者更好,或者更好的是HTTP删除操作.

这是真的吗?谁能为此声明背后的理由提供更详细的解释?

编辑

wikipedia 表示以下内容:

某些方法(例如,头部,获取,选项和跟踪)定义为安全,这意味着它们仅用于信息检索,不应更改服务器的状态.

相比之下,诸如Post,Put和Delete之类的方法旨在用于可能在服务器上造成副作用的操作

推荐答案

乔恩·斯基特(Jon Skeet)的答案是规范的答案.但是:假设您有一个链接:

href = "\myApp\DeleteImportantData.aspx?UserID=27"

和Google-Bot出现并为您的页面索引吗?那会发生什么?

其他推荐答案

获取通常没有副作用 – 换句话说,它不会改变状态.这意味着可以缓存结果,可以安全地制作书签等.

来自 http 1.1 rfc 1.1 rfc 2616 p>

实施者应意识到
软件代表用户在他们的
通过互联网的互动,以及
应该小心允许用户
注意他们可能会采取任何行动
采取可能出乎意料的
对自己或他人的意义.

特别是,大会已经
确定了头和头
方法不应具有
采取行动的意义
比检索.这些方法应该
被视为”安全”.这允许用户
代理代表其他方法,
例如帖子,放置和删除,
特殊的方式,使用户成为
意识到一个事实可能是
要求不安全的动作.

自然,不可能
确保服务器不
由于
执行GET请求;实际上,
一些动态资源认为
特征.重要的区别
这是用户没有要求
副作用,因此不能
对他们负责.

其他推荐答案

除了围绕着掌握的纯粹主义问题外,还有一个实用的方面:蜘蛛/机器人/爬行者等将跟随超链接.如果您将”删除”操作作为可以获取的超链接,那么Google可以轻松删除所有数据.请参阅” doom的蜘蛛”.

有了帖子,这不是风险.

以上所述是小编给大家介绍的为什么要用HTTP POST或DELETE来删除,而不是GET?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:http://www.77isp.com/post/34269.html

=========================================

http://www.77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。