Spec-Zone.ru › OpenJDK 27

Класс URLPermission

java.lang.Object
java.security.Permission
java.net.URLPermission
Все реализуемые интерфейсы:
Serializable, Guard
@Deprecated(since="25", forRemoval=true) public final class URLPermission extends Permission
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Это разрешение нельзя использовать для управления доступом к ресурсам, поскольку диспетчер безопасности больше не поддерживается.
Представляет разрешение на доступ к ресурсу или набору ресурсов, определяемых заданным URL, и заданным набором методов запроса и заголовков запроса, устанавливаемых пользователем. Имя разрешения — это строка URL. Строка действий представляет собой объединение методов запроса и заголовков. Этот класс не ограничивает набор имен методов и заголовков.

URL

Строка URL должна иметь следующую структуру.

    scheme : // authority [ / path ] [ ignored-query-or-fragment ]
scheme обычно будет http или https, однако этот класс не устанавливает таких ограничений. authority задается следующим образом:
    authority = [ userinfo @ ] hostrange [ : portrange ]
    portrange = portnumber | -portnumber | portnumber-[portnumber] | *
    hostrange = ([*.] dnsname) | IPv4address | IPv6address
dnsname — стандартное DNS-имя узла или домена, то есть одна или несколько меток, разделенных символом ".". IPv4address — стандартный литерал IPv4-адреса, а IPv6address определяется в RFC 2732. Однако литералы IPv6-адресов должны быть заключены в символы '[]'. Перед спецификацией dnsname может стоять "*.", что означает, что имя будет соответствовать любому имени узла, крайние правые метки домена которого совпадают с этим именем. Например, "*.example.com" соответствует "foo.bar.example.com"

portrange используется для задания номера порта или ограниченного либо неограниченного диапазона портов, к которым применяется это разрешение. Если portrange отсутствует или задан некорректно, используется порт по умолчанию, если схема — http (по умолчанию 80) или https (по умолчанию 443). Для других схем порт по умолчанию не предполагается. Можно указать подстановочный знак, означающий все порты.

userinfo является необязательным. Если компонент userinfo указан, он игнорируется при создании URLPermission и не влияет на другие методы, определенные этим классом.

Компонент path состоит из последовательности сегментов пути, разделенных символами '/'. path также может быть пустым. Путь задается аналогично пути в FilePermission. Существуют три варианта, как показано в следующих примерах:

Примеры URL
Пример URL Описание
http://www.example.com/a/b/c.html URL, идентифицирующий определенный (единственный) ресурс
http://www.example.com/a/b/* Символ '*' обозначает все ресурсы в том же «каталоге» — иными словами, все ресурсы с тем же количеством компонентов пути, отличающиеся только последним компонентом пути, представленным символом '*'.
http://www.example.com/a/b/- Символ '-' обозначает все ресурсы рекурсивно ниже указанного пути (например, http://www.example.com/a/b/c/d/e.html соответствует этому примеру).

Символы '*' и '-' могут указываться только в последнем сегменте пути и должны быть единственными символами в этом сегменте. Любые компоненты запроса или фрагмента URL игнорируются при создании URLPermission.

В особом случае принимаются URL вида "scheme:*", обозначающие любой URL с заданной схемой.

Компоненты scheme и authority строки URL обрабатываются без учета регистра. Это означает, что equals(Object), hashCode() и implies(Permission) не учитывают регистр этих компонентов. Если компонент authority содержит литерал IP-адреса, адрес нормализуется перед сравнением. Регистр символов компонента path учитывается.

ignored-query-or-fragment обозначает любой запрос или фрагмент, расположенный после компонента пути и игнорируемый конструкторами этого класса. Он определяется следующим образом:

    ignored-query-or-fragment = [ ? query ] [ # fragment ]
где query и fragment определены в RFC2396. Поэтому getName() возвращает только компоненты scheme, authority и path строки URL, с которой было создано разрешение.

Строка действий

Строка действий URLPermission представляет собой объединение списка методов и списка заголовков запроса. Это списки разрешенных методов запроса и разрешенных заголовков запроса данного разрешения соответственно. Списки разделяются символом двоеточия ':', а элементы каждого списка — запятыми. Например:

  • "POST,GET,DELETE"
  • "GET:X-Foo-Request,X-Bar-Request"
  • "POST,GET:Header1,Header2"

В первом примере указаны методы POST, GET и DELETE, но не заголовки запроса. Во втором примере указан один метод запроса и два заголовка. В третьем примере указаны два метода запроса и два заголовка.

Разделитель-двоеточие можно не указывать, если список заголовков запроса пуст. В строке действий не допускаются пробельные символы. Строки действий, передаваемые конструкторам URLPermission, регистронезависимы и нормализуются: имена методов преобразуются в верхний регистр, а имена заголовков — к формату, определенному в RFC2616 (нижний регистр, первая буква каждого слова — заглавная). Любой из списков может содержать подстановочный символ '*', обозначающий все методы запроса или все заголовки соответственно.

Начиная с:
1.8
Внешние спецификации
  • RFC 2296: Алгоритм удаленного выбора вариантов HTTP -- RVSA/1.0
  • RFC 2732: Формат литералов IPv6-адресов в URL
См. также:
  • Сериализованная форма

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

Конструктор Описание
URLPermission(String url)
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Создает URLPermission с заданной строкой URL и неограниченным набором методов и заголовков запроса, вызывая конструктор с двумя аргументами следующим образом: URLPermission(url, "*:*")
URLPermission(String url, String actions)
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Создает новый URLPermission из строки URL, разрешающий указанные методы запроса и заголовки запроса, устанавливаемые пользователем.

Краткое описание методов

Модификатор и тип Метод Описание
boolean equals(Object p)
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Возвращает true, если this.getActions().equals(p.getActions()) и URL объекта p равен URL этого объекта.
String getActions()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Возвращает нормализованный список методов и список заголовков запроса в следующем виде:
int hashCode()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Возвращает хеш-код, вычисленный на основе хеш-кода строки действий и строки URL.
boolean implies(Permission p)
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Проверяет, подразумевает ли это URLPermission указанное разрешение.

Методы, объявленные в классе Permission

checkGuard, getName, newPermissionCollection, toString
Модификатор и тип Метод Описание
void checkGuard(Object object)
Реализует интерфейс guard для разрешения.
final String getName()
Возвращает имя этого Permission.
PermissionCollection newPermissionCollection()
Возвращает пустой PermissionCollection для заданного объекта Permission или null, если он не определен.
String toString()
Возвращает строку с описанием этого Permission.

Методы, объявленные в классе Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения заданного промежутка реального времени.

Подробное описание конструкторов

URLPermission

public URLPermission(String url, String actions)
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Создает новый URLPermission из строки URL, разрешающий указанные методы запроса и заголовки запроса, устанавливаемые пользователем. Именем разрешения является строка URL, с которой оно было создано. Внутренне используются только компоненты схемы, authority и пути URL. Все компоненты фрагмента или запроса игнорируются. Строка действий разрешения задается, как описано выше.
Параметры:
url — строка URL
actions — строка действий
Вызывает исключение:
IllegalArgumentException — если URL некорректен или actions содержит пробельные символы.

URLPermission

public URLPermission(String url)
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Создает URLPermission с заданной строкой URL и неограниченным набором методов и заголовков запроса, вызывая конструктор с двумя аргументами следующим образом: URLPermission(url, "*:*")
Параметры:
url — строка URL
Вызывает исключение:
IllegalArgumentException — если URL не является корректным URI

Подробное описание методов

getActions

public String getActions()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Возвращает нормализованный список методов и список заголовков запроса в следующем виде:
     "method-names : header-names"

где method-names — список методов, разделенных запятыми, а header-names — список разрешенных заголовков, разделенных запятыми. Возвращаемая строка не содержит пробельных символов. Если header-names пуст, разделитель-двоеточие может отсутствовать.

Указано в:
getActions в классе Permission
Возвращает:
действия этого Permission.

implies

public boolean implies(Permission p)
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Проверяет, подразумевает ли это URLPermission указанное разрешение. В частности, выполняются следующие проверки, как если бы они выполнялись в приведенной последовательности:
  • если 'p' не является экземпляром URLPermission, вернуть false
  • если какой-либо из методов объекта p отсутствует в списке методов этого объекта и список методов этого объекта не равен "*", вернуть false.
  • если какие-либо заголовки объекта p отсутствуют в списке заголовков запроса этого объекта и список заголовков запроса этого объекта не равен "*", вернуть false.
  • если схема URL этого объекта не равна схеме URL объекта p, вернуть false
  • если специфичная для схемы часть URL этого объекта равна '*', вернуть true
  • если множество узлов, определяемых диапазоном узлов в URL объекта p, не является подмножеством диапазона узлов в URL этого объекта, вернуть false. Например, "*.foo.example.com" является подмножеством "*.example.com". "foo.bar.example.com" не является подмножеством "*.foo.example.com"
  • если диапазон портов, определяемый URL объекта p, не является подмножеством диапазона портов, определяемого URL этого объекта, вернуть false.
  • если путь или пути, заданные в URL объекта p, входят в множество путей, заданных в URL этого объекта, вернуть true
  • в противном случае вернуть false

Ниже приведены примеры сопоставления путей:

Примеры сопоставления путей
Путь этого объекта Путь объекта p Совпадение
/a/b /a/b да
/a/b/* /a/b/c да
/a/b/c/d нет
/a/b/c/- нет
/a/b/- /a/b/c/d да
/a/b/c/d/e да
/a/b/c/* да
Указано в:
implies в классе Permission
Параметры:
p — разрешение для проверки.
Возвращает:
true, если указанное разрешение подразумевается этим объектом, false в противном случае.

equals

public boolean equals(Object p)
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Возвращает true, если this.getActions().equals(p.getActions()) и URL объекта p равен URL этого объекта. В противном случае возвращает false.
Указано в:
equals в классе Permission
Параметры:
p — объект, равенство которого с этим объектом проверяется.
Возвращает:
true, если оба объекта Permission эквивалентны.
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Возвращает хеш-код, вычисленный на основе хеш-кода строки действий и строки URL.
Указано в:
hashCode в классе Permission
Возвращает:
значение хеш-кода для этого объекта.
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

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