Класс URLPermission
- Все реализуемые интерфейсы:
Serializable, Guard
@Deprecated(since="25", forRemoval=true) public final class URLPermission extends Permission
URL
Строка URL должна иметь следующую структуру.
scheme : // authority [ / path ] [ ignored-query-or-fragment ]
схема обычно будет http или https, но этот класс не накладывает таких ограничений. полномочия задаются следующим образом:
authority = [ userinfo @ ] hostrange [ : portrange ]
portrange = portnumber | -portnumber | portnumber-[portnumber] | *
hostrange = ([*.] dnsname) | IPv4address | IPv6address
имя DNS — это стандартное имя узла или домена DNS, то есть одна или несколько меток, разделённых символом ".". адрес IPv4 — это стандартный буквальный адрес IPv4, а адрес IPv6 задаётся в соответствии с RFC 2732. Однако буквальные адреса IPv6 должны быть заключены в символы '[]'. Перед спецификацией имени DNS может указываться "*.", что означает, что имя будет соответствовать любому имени узла, крайние правые доменные метки которого совпадают с этим именем. Например, "*.example.com" соответствует "foo.bar.example.com" диапазон портов используется для указания номера порта либо ограниченного или неограниченного диапазона портов, к которым применяется это разрешение. Если диапазон портов отсутствует или задан неверно, предполагается порт по умолчанию, если схема — http (по умолчанию 80) или https (по умолчанию 443). Для других схем порт по умолчанию не предполагается. Можно указать подстановочный знак, означающий все порты.
информация пользователя является необязательной. Если компонент информации пользователя присутствует, он игнорируется при создании URLPermission и не влияет на другие методы, определённые этим классом.
Компонент пути состоит из последовательности сегментов пути, разделённых символами '/'. Путь также может быть пустым. Путь задаётся способом, аналогичным пути в 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 соответствует этому примеру). |
Символы '*' и '-' можно указывать только в последнем сегменте пути, и они должны быть единственными символами в этом сегменте. При создании URLPermission все компоненты запроса и фрагмента URL игнорируются.
В особом случае принимаются URL вида "scheme:*", обозначающие любой URL с указанной схемой.
Компоненты схемы и полномочий строки URL обрабатываются без учёта регистра. Это означает, что equals(Object), hashCode() и implies(Permission) не учитывают регистр этих компонентов. Если компонент полномочий содержит буквальный IP-адрес, адрес нормализуется для сравнения. Регистр символов в компоненте пути учитывается.
игнорируемый запрос или фрагмент означает любой запрос или фрагмент, указанный после компонента пути и игнорируемый конструкторами этого класса. Он определяется следующим образом:
ignored-query-or-fragment = [ ? query ] [ # fragment ]
где запрос и фрагмент определены в RFC2396. Поэтому getName() возвращает только компоненты схемы, полномочий и пути строки 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
Подробное описание конструкторов
URLPermission
public URLPermission(String url, String actions)
- Параметры:
-
url— строка URL -
actions— строка действий - Исключения:
-
IllegalArgumentException— если URL недопустим или строка действий содержит пробельные символы.
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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/URLPermission.html