为什么Laravel默认情况下通过POST注销(而不是GET)?

时间:2016-08-05 13:03:27

标签: php laravel laravel-5 laravel-routing

在Laravel应用程序的上下文中,POST执行注销的意义是什么?是否有一些安全和/或会话的特殊性,只是在GETing上发布?

生成的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>

2 个答案:

答案 0 :(得分:2)

GET请求应该是“safe”,不应该有任何明显的副作用。例如,如果浏览器的预先缓存功能跟随链接,则无关紧要。那应该只是得到一些数据。

将用户注销会产生严重的副作用,因此GET不合适。

答案 1 :(得分:0)

原因是它希望随请求提交CSRF令牌:

{{ csrf_field() }}

所以,是的,这完全是关于安全性的。