注销请求应该设计为 GET 还是 POST?

Posted

技术标签:

【中文标题】注销请求应该设计为 GET 还是 POST?【英文标题】:Should a logoff request be designed as GET or POST? 【发布时间】:2015-07-01 20:43:08 【问题描述】:

我正在实施一些休息服务。根据 SDK,我必须调用的第一个服务是用于登录的 http POST 请求。输入是我的用户凭据,输出是我的会话 ID。

要注销,我还必须发出 http POST 请求,但请求正文中没有任何数据/有效负载。相反,必须在包含会话 ID 的请求中添加标头字段。

我有点伤心,这是注销请求的正确设计,还是应该使用 GET 方法?更一般地说,没有输入(查询参数和请求标头除外)且没有输出的请求应该是 GET、POST 还是其他?为什么会这样或为什么不呢?

【问题讨论】:

我会说 POST。一般原则,任何导致状态变化的东西都应该在 POST 而不是 GET 中。 【参考方案1】:

根据RFC2616GET 是一种“安全方法”,

除了检索之外,不应该有采取行动的意义

注销,对我来说似乎不是一个安全的操作,所以 GET 不适合。

因此它应该是一个 POST。没有其他 HTTP 动词在语义上似乎合适。

【讨论】:

以上是关于注销请求应该设计为 GET 还是 POST?的主要内容,如果未能解决你的问题,请参考以下文章

struts2如何指定是post请求还是get请求

基本身份验证请求应该是 POST 还是 GET?

注销:GET 还是 POST?

HTTP方法之GET与POST对比

03_Django-GET请求和POST请求-设计模式及模板层

03_Django-GET请求和POST请求-设计模式及模板层