Spec-Zone.ru › Ruby 3.2

class CGI::Cookie

Parent:
Массив

Class представляющий HTTP-cookie.

Помимо специфичных полей и методов, экземпляр 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_VALUE_RE
PATH_VALUE_RE
TOKEN_RE

Атрибуты

domain[R]

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

expires[RW]

Time, по которому истекает действие этого cookie, как Time

httponly[R]

True, если этот cookie — httponly; false в противном случае

name[R]

Имя этого cookie, как String

path[R]

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

secure[R]

True, если этот cookie — secure; false в противном случае

Общедоступные методы класса

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

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

  self.name = options["name"]
  value = Array(options["value"])
  # simple support for IE
  self.path = options["path"] || (%r|\A(.*/)| =~ ENV["SCRIPT_NAME"] ? $1 : "")
  self.domain = options["domain"]
  @expires = options["expires"]
  @secure = options["secure"] == true
  @httponly = options["httponly"] == true

  super(value)
end

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

name_string

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

*value

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

options_hash

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

name

имя cookie. Обязательно.

value

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

path

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

domain

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

expires

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

secure

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

httponly

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

false).  HttpOnly cookies are not available to javascript.

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

Вызывает метод суперкласса Array::new
parse(raw_cookie) Показать исходный код
# File lib/cgi/cookie.rb, line 183
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
    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

Разбирает строку raw cookie в словарь пар cookie-имя=>Cookie.

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

Общедоступные методы экземпляра

domain=(str) Показать исходный код
# File lib/cgi/cookie.rb, line 126
def domain=(str)
  if str and ((str = str.b).bytesize > 255 or !DOMAIN_VALUE_RE.match?(str))
    raise ArgumentError, "invalid domain: #{str.dump}"
  end
  @domain = str
end

Установить домен, к которому относится этот cookie

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

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

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

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

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

name=(str) Показать исходный код
# File lib/cgi/cookie.rb, line 106
def name=(str)
  if str and !TOKEN_RE.match?(str)
    raise ArgumentError, "invalid name: #{str.dump}"
  end
  @name = str
end

Установить имя этого cookie

path=(str) Показать исходный код
# File lib/cgi/cookie.rb, line 116
def path=(str)
  if str and !PATH_VALUE_RE.match?(str)
    raise ArgumentError, "invalid path: #{str.dump}"
  end
  @path = str
end

Установить путь, к которому относится этот cookie

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

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

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

to_s() Показать исходный код
# File lib/cgi/cookie.rb, line 166
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 141
def value
  self
end

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

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

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

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

Spec-Zone.ru

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