English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby CGI 쿠키

HTTP 프로토콜은 상태 없는 프로토콜입니다. 하지만 상업 웹 사이트는 다른 페이지 간의 세션 정보를 유지해야 합니다.

사용자가 웹 사이트 등록 과정에서 페이지 전환을 해야 하지만 이전에 입력한 정보가 잃어버리지 않도록 해야 합니다.

이 경우 Cookie는 우리에게 문제를 잘 해결해 줍니다.

Cookie는 어떻게 작동하는가?

几乎所有의 웹 디자이너가 웹 디자인을 할 때 Cookie를 사용합니다. 그들은 웹 사이트를 방문하는 사용자에게 더 친절하고 문화적인 탐색 환경을 제공하고자 하며, 동시에 방문자의 정보를 더 정확하게 수집하려고 합니다.

쓰기와 읽기

Cookies集合은 Response 객체 및 Request 객체에 부속된 데이터 셋입니다. 사용할 때는 Response 또는 Request 앞에 추가해야 합니다.

고객기에 Cookies를 보내는 문법은 일반적으로 다음과 같습니다:

존재하지 않는 Cookies 집합에 설정할 때는 고객기에 생성되고, 이미 존재하면 대체됩니다. Cookies는 HTTP 전송의 헤더 정보로 고객기에 보내지므로, 고객기에 Cookies를 보내는 코드는 보통 브라우저에 보내는 HTML 파일의 태그 전에 위치합니다.

사용자가 Cookies를 읽기 위해 Request 객체의 Cookies 집합을 사용해야 합니다. 사용 방법은 다음과 같습니다. 주의할 점은, 서버가 브라우저에 데이터를 다운로드하기 시작하기 전까지는 브라우저와 서버가 Cookies 집합의 데이터를 교환할 수 있습니다. 브라우저가 서버에서 다운로드한 데이터를 받기 시작하면, Cookies의 데이터 교환은 중지됩니다. 오류를 피하기 위해 프로그램의 시작에 response.Buffer=True을 추가해야 합니다.

집합의 속성

  • 1.Expires属性:이 속성은 Cookies에 제한기를 설정합니다. 제한기 내에서는 웹페이지를 열 때마다 저장된 Cookies를 호출할 수 있습니다. 제한기가 지났다면 Cookies는 자동으로 삭제됩니다. 예를 들어: Cookies의 유효기간을 설정합니다2004년4월1날짜에 도달하면 자동으로 삭제됩니다. Cookies에有效期가 설정되지 않았다면, 브라우저를 열 때부터 닫을 때까지의 생명주기가 있습니다. 매번 실행되면 생명주기가 끝나고, 다음 실행에서 다시 시작합니다.

  • 2.Domain属性:이 속성은 Cookies 전송 데이터의 유일성을 정의합니다. _blank">搜狐主页에만 특정 Cookies를 전송할 때는 다음과 같은 코드를 사용할 수 있습니다:

  • 3.Path属性:Cookies가 지정된 경로 요청에만 발신됩니다. Path属性가 설정되지 않았다면, 애플리케이션 소프트웨어의 기본 경로를 사용합니다.

  • 4.Secure属性:Cookies가 사용자에 의해 읽히는지 지정합니다.

  • 5、Name=Value : Cookies는 키밸류 형식으로 설정 및 검색됩니다.

Ruby에서 Cookies 처리

cookie라는 객체를 생성하여 텍스트 정보를 저장하고, 이 정보를 브라우저로 보내고, CGI.out를 호출하여 cookie의 헤더를 설정할 수 있습니다:

온라인 예제

#!/usr/bin/ruby
 
require "cgi"
cgi = CGI.new("html4")
cookie = CGI::Cookie.new('name' => 'mycookie',
                         'value' => 'Zara Ali',
                         'expires' => Time.now + 3600)
cgi.out('cookie' => cookie) do
   cgi.head + cgi.body { "Cookie stored" }
end

다음에 이 페이지로 돌아가고 cookie 값을 찾아보겠습니다.

온라인 예제

#!/usr/bin/ruby
 
require "cgi"
cgi = CGI.new("html4")
cookie = cgi.cookies['mycookie']
cgi.out('cookie' => cookie) do
   cgi.head + cgi.body { cookie[0] }
end

CGI::Cookie 객체를 구현할 때 다음 파라미터를 포함합니다:

파라미터설명
namecookie의 이름을 지정합니다.
valuecookie의 값을 지정합니다.
expirecookie의 유효 기간을 지정합니다.
pathcookie의 서버 경로를 지정합니다.
domaincookie의 도메인을 지정합니다.
securecookie를 보안 HTTPS 연결을 통해 전송할지 여부를 지정합니다.