Класс URLPermission
- Все реализуемые интерфейсы:
Serializable, Guard
@Deprecated(since="25", forRemoval=true) public final class URLPermission extends Permission
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 | Описание |
|---|---|
| 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
- Внешние спецификации
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
URLPermission |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Создает URLPermission с заданной строкой URL и неограниченным набором методов и заголовков запроса, вызывая конструктор с двумя аргументами следующим образом: URLPermission(url, "*:*") |
URLPermission |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Создает новый URLPermission из строки URL, разрешающий указанные методы запроса и заголовки запроса, устанавливаемые пользователем. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Возвращает true, если this.getActions().equals(p.getActions()) и URL объекта p равен URL этого объекта. |
String |
getActions() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Возвращает нормализованный список методов и список заголовков запроса в следующем виде: |
int |
hashCode() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Возвращает хеш-код, вычисленный на основе хеш-кода строки действий и строки URL. |
boolean |
implies |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Проверяет, подразумевает ли это URLPermission указанное разрешение. |
Методы, объявленные в классе Permission
checkGuard, getName, newPermissionCollection, toString | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
checkGuard |
Реализует интерфейс 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 |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения заданного промежутка реального времени. |
Подробное описание конструкторов
URLPermission
public URLPermission(String url, String actions)
- Параметры:
-
url— строка URL -
actions— строка действий - Вызывает исключение:
-
IllegalArgumentException— если URL некорректен или actions содержит пробельные символы.
URLPermission
public URLPermission(String url)
- Параметры:
-
url— строка URL - Вызывает исключение:
-
IllegalArgumentException— если URL не является корректнымURI
Подробное описание методов
getActions
public String getActions()
"method-names : header-names"
где method-names — список методов, разделенных запятыми, а header-names — список разрешенных заголовков, разделенных запятыми. Возвращаемая строка не содержит пробельных символов. Если header-names пуст, разделитель-двоеточие может отсутствовать.
- Указано в:
-
getActionsв классеPermission - Возвращает:
- действия этого
Permission.
implies
public boolean implies(Permission p)
- если '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)
- Указано в:
-
equalsв классеPermission - Параметры:
-
p— объект, равенство которого с этим объектом проверяется. - Возвращает:
-
true, если оба объектаPermissionэквивалентны. - См. также:
hashCode
public int hashCode()
- Указано в:
-
hashCodeв классеPermission - Возвращает:
- значение хеш-кода для этого объекта.
- См. также:
© 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.