Spec-Zone.ru › Ruby 2.5

класс CGI::Cookie

Родитель:
Массив

Класс представляющий HTTP-куки.

Помимо своих специфических полей и методов, экземпляр Cookie является делегатором к массиву своих значений.

См. RFC 2965.

Примеры использования

cookie1 = CGI::Cookie.new("name", "value1", "value2", ...)
cookie1 = CGI::Cookie.new("name" => "name", "value" => "value")
cookie1 = CGI::Cookie.new('name'     => 'name',
                          'value'    => ['value1', 'value2', ...],
                          'path'     => 'path',   # optional
                          'domain'   => 'domain', # optional
                          'expires'  => Time.now, # optional
                          'secure'   => true,     # optional
                          'httponly' => true      # optional
                          )

cgi.out("cookie" => [cookie1, cookie2]) { "string" }

name     = cookie1.name
values   = cookie1.value
path     = cookie1.path
domain   = cookie1.domain
expires  = cookie1.expires
secure   = cookie1.secure
httponly = cookie1.httponly

cookie1.name     = 'name'
cookie1.value    = ['value1', 'value2', ...]
cookie1.path     = 'path'
cookie1.domain   = 'domain'
cookie1.expires  = Time.now + 30
cookie1.secure   = true
cookie1.httponly = true

Атрибуты

domain[RW]

Домен, к которому относится этот куки, в формате String

expires[RW]

Время истечения срока действия этого куки, в формате Time

httponly[R]

Истина, если этот куки является httponly; ложь в противном случае

name[RW]

Имя этого куки, в формате String

path[RW]

Путь, к которому относится этот куки, в формате String

secure[R]

Истина, если этот куки является защищённым; ложь в противном случае

Публичные методы класса

new(name_string,*value) Показать исходный код
new(options_hash)
# File lib/cgi/cookie.rb, line 70
def initialize(name = "", *value)
  @domain = nil
  @expires = nil
  if name.kind_of?(String)
    @name = name
    %r|^(.*/)|.match(ENV["SCRIPT_NAME"])
    @path = ($1 or "")
    @secure = false
    @httponly = false
    return super(value)
  end

  options = name
  unless options.has_key?("name")
    raise ArgumentError, "`name' required"
  end

  @name = options["name"]
  value = Array(options["value"])
  # simple support for IE
  if options["path"]
    @path = options["path"]
  else
    %r|^(.*/)|.match(ENV["SCRIPT_NAME"])
    @path = ($1 or "")
  end
  @domain = options["domain"]
  @expires = options["expires"]
  @secure = options["secure"] == true
  @httponly = options["httponly"] == true

  super(value)
end

Создать новый объект CGI::Cookie.

name_string

Имя куки; в этом формате нет домена или срока истечения действия. Путь определяется из переменной окружения SCRIPT_NAME, а secure — ложь.

*value

Значение или список значений куки

options_hash

Словарь опций для инициализации этого Cookie. Возможные опции:

name

Имя куки. Требуется.

value

Значение или список значений куки.

path

Путь, к которому относится этот куки. По умолчанию соответствует значению переменной окружения SCRIPT_NAME.

domain

Домен, к которому относится этот куки.

expires

Время истечения срока действия этого куки, как объект Time.

secure

Является ли этот куки защищенным (по умолчанию ложь). Защищенные куки передаются только серверам HTTPS.

httponly

является ли этот куки куки HttpOnly или нет (по умолчанию

false).  HttpOnly cookies are not available to javascript.

Эти ключевые слова соответствуют атрибутам объекта куки.

Вызов метода суперкласса Array.new
parse(raw_cookie) Показать исходный код
# File lib/cgi/cookie.rb, line 160
def self.parse(raw_cookie)
  cookies = Hash.new([])
  return cookies unless raw_cookie

  raw_cookie.split(/;\s?/).each do |pairs|
    name, values = pairs.split('=',2)
    next unless name and values
    name = CGI.unescape(name)
    values ||= ""
    values = values.split('&').collect{|v| CGI.unescape(v,@@accept_charset) }
    if cookies.has_key?(name)
      values = cookies[name].value + values
    end
    cookies[name] = Cookie.new(name, *values)
  end

  cookies
end

Разбор строки куки в словарь пар имя-куки.

cookies = CGI::Cookie.parse("raw_cookie_string")
  # { "name1" => cookie1, "name2" => cookie2, ... }

Публичные методы экземпляра

httponly=(val) Показать исходный код
# File lib/cgi/cookie.rb, line 138
def httponly=(val)
  @httponly = !!val
end

Установить, является ли Cookie куки httponly.

val должно быть булевым значением.

inspect() Показать исходный код
# File lib/cgi/cookie.rb, line 180
def inspect
  "#<CGI::Cookie: #{self.to_s.inspect}>"
end

Краткое описание строки куки.

secure=(val) Показать исходный код
# File lib/cgi/cookie.rb, line 130
def secure=(val)
  @secure = val if val == true or val == false
  @secure
end

Установить, является ли Cookie защищенным.

val должно быть булевым значением.

to_s() Показать исходный код
# File lib/cgi/cookie.rb, line 143
def to_s
  val = collect{|v| CGI.escape(v) }.join("&")
  buf = "#{@name}=#{val}".dup
  buf << "; domain=#{@domain}" if @domain
  buf << "; path=#{@path}"     if @path
  buf << "; expires=#{CGI::rfc1123_date(@expires)}" if @expires
  buf << "; secure"            if @secure
  buf << "; HttpOnly"          if @httponly
  buf
end

Преобразовать Cookie в строковое представление.

value() Показать исходный код
# File lib/cgi/cookie.rb, line 118
def value
  self
end

Возвращает значение или список значений для этого куки.

value=(val) Показать исходный код
# File lib/cgi/cookie.rb, line 123
def value=(val)
  replace(Array(val))
end

Заменяет значение этого куки новым значением или списком значений.

Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API