2016-08-05 3 views
0

Laravel 응용 프로그램의 컨텍스트 내에서 로그 아웃을 수행하는 POSTing의 중요성은 무엇입니까? 그냥 GETing을 통해 게시하는 보안 및/또는 세션 특수성이 있습니까? 생성 된 make::auth에서Laravel은 기본적으로 POST를 통해 로그 아웃하는 이유는 무엇입니까 (GET과 반대)?

관련 부분 : 네,이 모든 것입니다 그래서

{{ csrf_field() }} 

:

<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> 
+1

그것은 선택의 문제이지만 또한 [이전에 논의 된] (http://stackoverflow.com/questions/3521290/logout-get-or-post) on Stackoverflow. –

+1

일반적으로 서버의 상태를 변경하는 작업은 POST를 통해 전송되어야합니다. 그것이 바로 제안이 항상 해왔 던 것입니다. – apokryfos

+0

RE : "중복으로 표시"- 게시 할 때 laravel의 맥락에서 묻는 중이었습니다 (나는 그것이 laravel의 특별한 기능이라고 생각했습니다). 그러나 더 광범위한 "원래"질문도 적용될 수 있습니다. – Chris

답변

1

GET 요청은 "safe"으로되어 있으며 중요한 부작용이 없어야합니다. 예를 들어, 브라우저의 사전 캐시 기능이 링크를 따라 간다면 중요하지 않습니다. 그것은 단지 약간의 데이터를 얻어야 만합니다.

사용자를 로그 아웃하는 것은 중요한 부작용이므로 GET이 부적절합니다.

0

이유는 CSRF 토큰 요청에 제출하고 싶어한다는 사실이다 보안에 관한.

+0

GET 요청에 대한 쿼리 문자열에 배치됩니다. – Quentin

관련 문제