Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

HTTP는 상태 비저장이므로 웹 브라우저와 웹 서버 간의 세션을 유지하는 방법은 무엇입니까?

<시간/>

HTTP는 "상태 비저장" 프로토콜로, 클라이언트가 웹페이지를 검색할 때마다 클라이언트가 웹 서버에 대한 별도의 연결을 열고 서버가 자동으로 이전 클라이언트 요청에 대한 기록을 유지하지 않습니다.

웹 클라이언트와 서버 간의 세션 유지

이제 웹 클라이언트와 웹 서버 간의 세션을 유지하기 위한 몇 가지 옵션에 대해 논의하겠습니다. -

쿠키

웹 서버는 각 웹 클라이언트에 고유한 세션 ID를 쿠키로 할당할 수 있으며 클라이언트의 후속 요청에 대해 수신된 쿠키를 사용하여 인식할 수 있습니다.

때때로 브라우저가 쿠키를 지원하지 않기 때문에 이것은 효과적인 방법이 아닐 수 있습니다. 세션을 유지하기 위해 이 절차를 사용하지 않는 것이 좋습니다.

숨겨진 양식 필드

웹 서버는 다음과 같이 고유한 세션 ID와 함께 숨겨진 HTML 양식 필드를 보낼 수 있습니다. -

<input type = "hidden" name = "sessionid" value = "12345">

이 항목은 양식이 제출될 때 지정된 이름과 값이 GET에 자동으로 포함됨을 의미합니다. 또는 POST 데이터. 웹 브라우저가 요청을 다시 보낼 때마다 session_id 값을 사용하여 다양한 웹 브라우저를 추적할 수 있습니다.

이것은 세션을 추적하는 효과적인 방법일 수 있지만 일반() 하이퍼텍스트 링크를 클릭해도 양식이 제출되지 않으므로 숨겨진 양식 필드도 일반 세션 추적을 지원할 수 없습니다.

URL 재작성

각 URL 끝에 몇 가지 추가 데이터를 추가할 수 있습니다. 이 데이터는 세션을 식별합니다. 서버는 해당 세션 식별자를 해당 세션에 대해 저장한 데이터와 연결할 수 있습니다.

예:https://tutorialspoint.com/file.htm;sessionid=12345 , 세션 식별자는 sessionid =12345로 첨부됩니다. 클라이언트를 식별하기 위해 웹 서버에서 액세스할 수 있습니다.

URL 재작성은 세션을 유지 관리하는 더 나은 방법이며 쿠키를 지원하지 않는 브라우저에서 작동합니다. 여기서 단점은 페이지가 단순한 정적 HTML 페이지이지만 세션 ID를 할당하기 위해 모든 URL을 동적으로 생성해야 한다는 것입니다.