- 所有已实现的接口:
Serializable,Guard
网址
url 字符串具有以下预期结构。
scheme : // authority [ / path ] [ ignored-query-or-fragment ]方案通常是 http 或 https,但不受此类限制。授权指定为:
authority = [ userinfo @ ] hostrange [ : portrange ] portrange = portnumber | -portnumber | portnumber-[portnumber] | * hostrange = ([*.] dnsname) | IPv4address | IPv6address域名是一个标准的 DNS 主机名或域名,即一个或多个由“.”分隔的标签。IPv4地址是一个标准的文字 IPv4 地址,并且IPv6地址如 RFC 2732 中所定义。但是,文字 IPv6 地址必须包含在“[]”字符中。这域名规范前面可以加上“*”。这意味着该名称将匹配最右侧域标签与该名称相同的任何主机名。例如,“*.example.com”匹配“foo.bar.example.com”
波特兰用于指定端口号,或此权限适用的有界或无界端口范围。如果 portrange 不存在或无效,则如果方案为 http(默认 80)或 https(默认 443),则假定默认端口号。其他方案不假定默认值。可以指定通配符,表示所有端口。
用户信息是可选的。用户信息组件(如果存在)在创建 URLPermission 时将被忽略,并且对此类定义的任何其他方法都没有影响。
这path组件包含一系列路径段,由“/”字符分隔。path也可能是空的。路径的指定方式与 FilePermission 中的路径类似。如以下示例所示,共有三种不同的方式:
| 示例网址 | Description |
|---|---|
| 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 匹配这个示例)。 |
'*' 和 '-' 只能在路径的最后一段中指定,并且必须是该段中的唯一字符。构造 URLPermissions 时忽略 url 的任何查询或片段组件。
作为一种特殊情况,“scheme:*”形式的 url 被接受为表示给定方案的任何 url。
这方案和授权处理 url 字符串的组件时不考虑大小写。这意味着 equals(Object) 、hashCode() 和 implies(Permission) 对这些组件不区分大小写。如果授权包含文字 IP 地址,然后将地址标准化以进行比较。路径部分区分大小写。
被忽略的查询或片段指的是出现在路径组件之后的任何查询或片段,并且被此类的构造方法忽略。它被定义为:
ignored-query-or-fragment = [ ? query ] [ # fragment ]哪里询问和分段如 RFC2396 中所定义。
getName() 因此只返回方案, 授权和path创建权限的 url 字符串的组成部分。
动作字符串
URLPermission 的操作字符串是方法列表和请求头列表.这些是权限的允许请求方法和允许请求标头的列表(分别)。这两个列表由冒号“:”字符分隔,每个列表的元素以逗号分隔。一些示例是:
- "POST,GET,DELETE"
- “GET:X-Foo-请求,X-Bar-请求”
- “发布,获取:标题 1,标题 2”
第一个示例指定方法:POST、GET 和 DELETE,但没有请求标头。第二个示例指定一个请求方法和两个标头。第三个示例指定了两个请求方法和两个标头。
如果请求标头列表为空,则无需存在冒号分隔符。操作字符串中不允许有空格。提供给 URLPermission 构造方法的操作字符串不区分大小写,并通过将方法名称转换为大写并将标头名称转换为 RFC2616 中定义的形式(小写,每个单词的首字母大写)进行规范化。任一列表都可以包含通配符“*”,分别表示所有请求方法或标头。
笔记。根据使用的上下文,某些请求方法和标头可能始终允许,而其他请求方法和标头可能始终不允许。例如,HTTP 协议处理程序可能不允许应用程序代码设置某些标头(例如 Content-Length),无论生效的安全策略是否允许。
- 自从:
- 1.8
- 参见:
-
构造方法总结
构造方法构造方法描述URLPermission(String url) 通过如下调用两个参数构造方法,使用给定的 url 字符串和不受限制的方法和请求标头创建 URLPermission:URLPermission(url, "*:*")URLPermission(String url, String actions) 从 url 字符串创建一个新的 URLPermission,它允许给定的请求方法和用户可设置的请求标头。 -
方法总结
修饰符和类型方法描述boolean如果 this.getActions().equals(p.getActions()) 和 p 的 url 等于 this 的 url,则返回 true。返回规范化的方法列表和请求头列表,形式为:inthashCode()返回根据操作字符串和 url 字符串的哈希码计算得出的哈希码。boolean检查此 URLPermission 是否暗示给定的权限。在类 java.security.Permission 中声明的方法
checkGuard, getName, newPermissionCollection, toString
-
构造方法详细信息
-
URLPermission
从 url 字符串创建一个新的 URLPermission,它允许给定的请求方法和用户可设置的请求标头。权限的名称是创建时使用的 url 字符串。内部仅使用 url 的 scheme、authority 和 path 组件。忽略任何片段或查询组件。权限操作字符串如上所述。- 参数:
url- 网址字符串actions- 动作字符串- 抛出:
IllegalArgumentException- 如果 url 无效或操作包含空格。
-
URLPermission
通过如下调用两个参数构造方法,使用给定的 url 字符串和不受限制的方法和请求标头创建 URLPermission:URLPermission(url, "*:*")- 参数:
url- 网址字符串- 抛出:
IllegalArgumentException- 如果 url 没有产生有效的URI
-
-
方法详情
-
getActions
返回规范化的方法列表和请求头列表,形式为:"method-names : header-names"
其中 method-names 是由逗号分隔的方法列表,header-names 是由逗号分隔的允许标头列表。返回的字符串中没有空格。如果 header-names 为空,则冒号分隔符可能不存在。
- 指定者:
getActions在类Permission中- 返回:
-
这个
Permission的动作。
-
implies
检查此 URLPermission 是否暗示给定的权限。具体来说,按照以下顺序进行以下检查:- 如果 'p' 不是 URLPermission 的实例,则返回 false
- 如果 p 的任何方法不在 this 的方法列表中,并且如果 this 的方法列表不等于“*”,则返回 false。
- 如果 p 的任何一个头不在这个请求头列表中,并且如果这个请求头列表不等于“*”,则返回 false。
- 如果这个 url scheme 不等于 p 的 url scheme 返回 false
- 如果此 url 的方案特定部分是“*”,则返回 true
- 如果由 p 的 url hostrange 定义的主机集不是此 url hostrange 的子集,则返回 false。例如,“*.foo.example.com”是“*.example.com”的子集。 “foo.bar.example.com”不是“*.foo.example.com”的子集
- 如果 p 的 url 定义的端口范围不是此 url 定义的端口范围的子集,则返回 false。
- 如果 p 的 url 指定的一个或多个路径包含在这个 url 指定的路径集中,则返回 true
- 否则,返回假
下面显示了一些如何匹配路径的示例:
路径匹配示例 这是路径 p的路径 match /a/b /a/b yes /a/b/* /a/b/c yes /A B C D no /a/b/c/- no /a/b/- /A B C D yes /a/b/c/d/e yes /a/b/c/* yes - 指定者:
implies在类Permission中- 参数:
p- 检查的权限。- 返回:
true如果此对象隐含了指定的权限,false如果不是。
-
equals
如果 this.getActions().equals(p.getActions()) 和 p 的 url 等于 this 的 url,则返回 true。否则返回假。- 指定者:
equals在类Permission中- 参数:
p- 我们正在测试与此对象是否相等的对象。- 返回:
true如果两个Permission对象是等价的。- 参见:
-
hashCode
public int hashCode()返回根据操作字符串和 url 字符串的哈希码计算得出的哈希码。- 指定者:
hashCode在类Permission中- 返回:
- 此对象的哈希码值。
- 参见:
-