Spec-Zone.ru › Ruby 2.4

класс CGI::Cookie

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

Класс, представляющий 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[RW]

Домен, для которого действует этот cookie, как String

expires[RW]

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

httponly[R]

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

name[RW]

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

path[RW]

Путь, для которого действует этот cookie, как String

secure[R]

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

Публичные Классовые Методы

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

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

*value

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

options_hash

Хэш опций для инициализации этого Cookie. Возможные опции:

name

имя cookie. Требуется.

value

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

path

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

domain

домен, для которого этот cookie применяется.

expires

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

secure

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

httponly

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

false).  HttpOnly cookies are not available to javascript.

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

Вызывает метод суперкласса 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

Парсит строку cookie в хэш пар cookie-имя=>Cookie.

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

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

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}"
  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

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

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

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

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