class URI::HTTP
Синтаксис URI HTTP определён в разделе 3.3 RFC1738.
Обратите внимание, что библиотека Ruby URI позволяет использовать URL-адреса HTTP, содержащие имена пользователей и пароли. Это не соответствует RFC, но поддерживалось в Internet Explorer 5 и 6 до выхода обновления безопасности MS04-004. См. <URL:support.microsoft.com/kb/834489>.
Константы
Открытые методы класса
# File lib/uri/http.rb, line 59 def self.build(args) tmp = Util.make_components_hash(self, args) super(tmp) end
Описание
Создаёт новый объект URI::HTTP из компонентов с проверкой синтаксиса.
Принимаются следующие компоненты: userinfo, host, port, path, query и fragment.
Компоненты следует передавать либо в виде Array, либо в виде Hash с ключами, образованными добавлением двоеточия перед именами компонентов.
Если используется Array, компоненты необходимо передать в следующем порядке: [userinfo, host, port, path, query, fragment].
Пример:
uri = URI::HTTP.build(host: 'www.example.com', path: '/foo/bar') uri = URI::HTTP.build([nil, "www.example.com", nil, "/path", "query", 'fragment'])
В настоящее время при передаче компонентов userinfo этот метод создаёт URI HTTP, недопустимые согласно RFC 1738.
URI::Generic::build Открытые методы экземпляра
# File lib/uri/http.rb, line 109
def authority
if port == default_port
host
else
"#{host}:#{port}"
end
end Описание
Возвращает authority для URI HTTP, определённую в www.rfc-editor.org/rfc/rfc3986#section-3.2.
Пример:
URI::HTTP.build(host: 'www.example.com', path: '/foo/bar').authority #=> "www.example.com" URI::HTTP.build(host: 'www.example.com', port: 8000, path: '/foo/bar').authority #=> "www.example.com:8000" URI::HTTP.build(host: 'www.example.com', port: 80, path: '/foo/bar').authority #=> "www.example.com"
# File lib/uri/http.rb, line 65
def check_host(v)
ret = super
if ret && v.empty?
raise InvalidComponentError,
"bad component(expected host component): #{v}"
end
ret
end Не допускает пустые имена хостов, поскольку RFC 3986 их запрещает.
URI::Generic#check_host # File lib/uri/http.rb, line 131
def origin
"#{scheme}://#{authority}"
end Описание
Возвращает origin для URI HTTP, определённый в www.rfc-editor.org/rfc/rfc6454.
Пример:
URI::HTTP.build(host: 'www.example.com', path: '/foo/bar').origin #=> "http://www.example.com" URI::HTTP.build(host: 'www.example.com', port: 8000, path: '/foo/bar').origin #=> "http://www.example.com:8000" URI::HTTP.build(host: 'www.example.com', port: 80, path: '/foo/bar').origin #=> "http://www.example.com" URI::HTTPS.build(host: 'www.example.com', path: '/foo/bar').origin #=> "https://www.example.com"
# File lib/uri/http.rb, line 89 def request_uri return unless @path url = @query ? "#@path?#@query" : @path.dup url.start_with?(?/.freeze) ? url : ?/ + url end
Описание
Возвращает полный путь для запроса HTTP, как того требует Net::HTTP::Get.
Если URI содержит запрос, полный путь имеет вид URI#path + ‘?’ + URI#query. В противном случае путь равен URI#path.
Пример:
uri = URI::HTTP.build(path: '/foo/bar', query: 'test=true') uri.request_uri # => "/foo/bar?test=true"
Ruby Core © 1993–2025 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.