Spec-Zone.ru › Ruby 2.7

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[RW]

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

expires[RW]

Time, до которого данный 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 71
def initialize(name = "", *value)
  @domain = nil
  @expires = nil
  if name.kind_of?(String)
    @name = name
    @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

  @name = options["name"]
  value = Array(options["value"])
  # simple support for IE
  @path = options["path"] || (%r|\A(.*/)| =~ ENV["SCRIPT_NAME"] ? $1 : "")
  @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 — ложно.

*value

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

options_hash

A 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 155
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

Разбор строки raw cookie в хэш пар cookie-name=>Cookie.

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

Публичные Методы Экземпляров

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

Set является ли cookie httponly cookie.

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

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

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

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

Set является ли cookie защищённым.

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

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

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

value=(val) Показать исходный код
# File lib/cgi/cookie.rb, line 118
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