Spec-Zone.ru › OpenJDK 24

Класс 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 отсутствует или недействителен, предполагается значение порта по умолчанию, если схема — 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 заданной схемы.

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

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

     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 пробелы не допускаются. Строки действий, предоставляемые конструкторам URLPermission, нечувствительны к регистру и нормализуются путём преобразования имён методов в верхний регистр и имён заголовков в форму, определённую в RFC2616 (строчные буквы с прописной первой буквой каждого слова). Любой список может содержать символ подстановки '*' , который обозначает все методы запроса или заголовки, соответственно.

Примечание API:
Это разрешение нельзя использовать для управления доступом к ресурсам, так как менеджер безопасности больше не поддерживается.
С:
1.8
Внешние спецификации
  • RFC 2296: HTTP Remote Variant Selection Algorithm — RVSA/1.0
  • RFC 2732: Формат литеральных IPv6-адресов в URL
См. также:
  • Сериализованная форма

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

Конструктор Описание
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 this.
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 некорректен или actions содержит пробелы.

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
Возвращает:
действия данного Permission.

implies

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

hashCode

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/net/URLPermission.html

Spec-Zone.ru

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