Spec-Zone.ru › OpenJDK 17

Класс URLPermission

java.lang.Object
java.security.Permission
java.net.URLPermission
Все реализованные интерфейсы:
Serializable, Guard
public final class URLPermission extends Permission
Представляет разрешение на доступ к ресурсу или набору ресурсов, определённых заданным URL, а также для заданного набора методов запроса и заголовков запроса, настраиваемых пользователем. Имя разрешения — это строка URL. Строка actions — это конкатенация методов запроса и заголовков. Диапазон имён методов и заголовков не ограничен этим классом.

URL

Строка URL имеет следующий ожидаемый формат.

     scheme : // authority [ / path ] [ ignored-query-or-fragment ]
 
схема обычно будет http или https, но не ограничена этим классом. авторитет указывается как:
     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 вида «схема:*», которые означают любой URL заданной схемы.

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

игнорируемый-запрос-или-фрагмент относится к любому запросу или фрагменту, который появляется после компонента пути и игнорируется конструкторами этого класса. Он определяется как:

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

Строка actions

Строка actions URLPermission — это конкатенация список методов и список заголовков запроса. Это списки разрешённых методов запроса и разрешённых заголовков запроса разрешения (соответственно). Два списка разделяются двоеточием «:» и элементы каждого списка разделяются запятыми. Вот несколько примеров:

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

Первый пример определяет методы POST, GET и DELETE, но без заголовков запроса. Второй пример определяет один метод запроса и два заголовка. Третий пример определяет два метода запроса и два заголовка.

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

Примечание. В зависимости от контекста использования некоторые методы и заголовки запроса могут быть разрешены всегда, а другие — никогда. Например, обработчик протокола HTTP может запретить установку некоторых заголовков, таких как Content-Length, кодом приложения, независимо от того, разрешает ли действующая политика безопасности это сделать.

С:
1.8
См. также:
  • Сериализованная форма

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

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

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

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

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

checkGuard, getName, newPermissionCollection, toString

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

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

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

URLPermission

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

URLPermission

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

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

getActions

public String getActions()
Возвращает нормализованный список методов и список заголовков запроса в виде:
      "method-names : header-names"
 

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

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

implies

public boolean implies(Permission p)
Проверяет, подразумевает ли данное URLPermission заданное разрешение. Конкретно, выполняются следующие проверки, как будто в следующем порядке:
  • если 'p' не является экземпляром URLPermission, возвращается false
  • если какой-либо метод p не входит в список методов этого, и если список методов этого не равен "*", то возвращается false.
  • если какой-либо заголовок p не входит в список заголовков запроса этого, и если список заголовков запроса этого не равен "*", то возвращается false.
  • если схема url этого не равна схеме url p, возвращается false
  • если схема url этого равна "*", то возвращается true
  • если множество хостов, определённых hostrange url p, не является подмножеством hostrange 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)
Возвращает true, если this.getActions().equals(p.getActions()) и url p равен url этого. В противном случае возвращает false.
Унаследованно от:
equals в классе Permission
Параметры:
p - объект, с которым производится проверка на равенство с этим объектом.
Возвращает:
true, если оба объекта Permission эквивалентны.
См. также:
  • Object.hashCode()
  • HashMap

hashCode

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

© 1993, 2021, 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/17/docs/api/java.base/java/net/URLPermission.html

Spec-Zone.ru

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