为啥 Laravel 默认通过 POST 注销(而不是 GET)? [复制]
Posted
技术标签:
【中文标题】为啥 Laravel 默认通过 POST 注销(而不是 GET)? [复制]【英文标题】:Why does Laravel, by default, logout via POST (As opposed to GET)? [duplicate]为什么 Laravel 默认通过 POST 注销(而不是 GET)? [复制] 【发布时间】:2016-12-11 21:53:49 【问题描述】:在 Laravel 应用程序的上下文中,POST 执行注销的意义是什么? POST 超过 GET 是否存在一些安全性和/或会话特殊性?
生成的make::auth
中的相关部分:
<ul class="dropdown-menu" role="menu">
<li>
<a
href=" url('/logout') "
onclick="event.preventDefault();document.getElementById('logout-form').submit();">
Logout
</a>
<form id="logout-form" action=" url('/logout') " method="POST" style="display: none;">
csrf_field()
</form>
</li>
</ul>
【问题讨论】:
这是一个选择问题,而且在***上也已经discussed before了。 一般来说,任何会改变服务器状态的动作都应该通过 POST 发送。这就是我们一直以来的建议。 RE:“标记为重复”-发布时,我是在 laravel 的上下文中询问的(我认为这是 laravel 的一个特殊功能),但可以看到更广泛的“原始”问题如何也适用 【参考方案1】:GET 请求应该是“safe”并且不应该有任何明显的副作用。例如,浏览器的预缓存功能是否跟随链接并不重要。那应该只是得到一些数据。
注销用户会产生很大的副作用,因此 GET 是不合适的。
【讨论】:
以上是关于为啥 Laravel 默认通过 POST 注销(而不是 GET)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.4 TokenMismatchException 和注销