- java.lang.Object
-
- java.security.Permission
-
- java.net.URLPermission
-
- 实现的所有接口
-
Serializable
,Guard
public final class URLPermission extends Permission
表示访问由给定URL定义的资源或资源集的权限,以及给定的一组用户可设置的请求方法和请求标头的权限。 权限的名称是url字符串。 actions字符串是请求方法和标头的串联。 方法和标题名称的范围不受此类的限制。网址
url字符串具有以下预期结构。
scheme : // authority [ / path ]
scheme通常是http或https,但不受此类的限制。 权限指定为:authority = [ userinfo @ ] hostrange [ : portrange ] portrange = portnumber | -portnumber | portnumber-[portnumber] | * hostrange = ([*.] dnsname) | IPv4address | IPv6address
dnsname是标准DNS主机或域名,即。 由“。”分隔的一个或多个标签。 IPv4address是一个标准的文字IPv4地址和IPv6address限定如RFC 2732 。 但是,文字IPv6地址必须用“[]”字符括起来。 dnsname规范可以以“*” 开头 。 这意味着该名称将匹配其最右侧域标签与此名称相同的任何主机名。 例如,“* .oracle.com”匹配“foo.bar.oracle.com”portrange用于指定此权限适用的端口号或有界或无界范围的端口。 如果portrange不存在或无效,则假定方案为
http
(默认为80)或https
(默认为443),则假定为默认端口号。 其他方案没有默认值。 可以指定通配符,表示所有端口。userinfo是可选的。 创建URLPermission时,将忽略userinfo组件(如果存在),并且不会影响此类定义的任何其他方法。
路径组件包括一系列路径段,由“/”字符分隔。 路径也可能是空的。 路径的指定方式与
URL Examples Example url Description http://www.oracle.com/a/b/c.html A url which identifies a specific (single) resource http://www.oracle.com/a/b/* The '*' character refers to all resources in the same "directory" - in other words all resources with the same number of path components, and which only differ in the final path component, represented by the '*'. http://www.oracle.com/a/b/- The '-' character refers to all resources recursively below the preceding path (eg. http://www.oracle.com/a/b/c/d/e.html matches this example).FilePermission
中的路径类似 。 以下示例显示了三种不同的方式:'*'和' - '只能在路径的最后一段中指定,并且必须是该段中唯一的字符。 构造URLPermissions时,将忽略URL的任何查询或片段组件。
作为一种特殊情况,形式的网址“scheme:*”被认为是指给定方案的任何网址。
url字符串的方案和权限组件在不考虑大小写的情况下进行处理。 这意味着
equals(Object)
,hashCode()
和implies(Permission)
区分相对于这些成分不敏感的。 如果权限包含文字IP地址,则对地址进行规范化以进行比较。 路径组件区分大小写。动作字符串
URLPermission的actions字符串是方法列表和请求标头列表的串联。 这些是允许的请求方法和许可的允许请求标头(分别)的列表。 这两个列表用冒号':'字符分隔,每个列表的元素用逗号分隔。 一些例子是:
- “POST,GET,DELETE”
- “GET:X-美孚请求,X-BAR-请求”
- “POST,GET:头1,头2”
第一个示例指定方法:POST,GET和DELETE,但没有请求标头。 第二个示例指定一个请求方法和两个标头。 第三个示例指定了两个请求方法和两个标头。
如果请求标头列表为空,则不需要存在冒号分隔符。 操作字符串中不允许使用空格。 提供给URLPermission构造函数的操作字符串不区分大小写,并通过将方法名称转换为大写和标题名称到RFC2616中定义的格式进行规范化(小写,每个单词的首字母大写)。 两个列表都可以包含通配符'*'字符,分别表示所有请求方法或标头。
注意。 根据使用环境,可能始终允许某些请求方法和标头,并且可能在任何时候都不允许其他请求方法和标头。 例如,HTTP协议处理程序可能会禁止某些标头(如Content-Length)由应用程序代码设置,无论有效的安全策略是否允许它。
- 从以下版本开始:
- 1.8
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 构造器 描述 URLPermission(String url)
通过调用两个参数构造函数,使用给定的url字符串和不受限制的方法以及请求标头创建URLPermission,如下所示:URLPermission(url,“*:*”)URLPermission(String url, String actions)
从url字符串创建一个新的URLPermission,它允许给定的请求方法和用户可设置的请求标头。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 boolean
equals(Object p)
如果,this.getActions()。equals(p.getActions())和p的url等于这个url,则返回true。String
getActions()
返回规范化方法列表和请求标头列表,格式如下:int
hashCode()
返回根据actions String和url字符串的哈希码计算的哈希码。boolean
implies(Permission p)
检查此URLPermission是否暗示给定的权限。-
声明方法的类 java.security.Permission
checkGuard, getName, newPermissionCollection, toString
-
-
-
-
构造方法详细信息
-
URLPermission
public URLPermission(String url, String actions)
从url字符串创建一个新的URLPermission,它允许给定的请求方法和用户可设置的请求标头。 权限的名称是它创建的url字符串。 内部仅使用url的方案,权限和路径组件。 忽略任何片段或查询组件。 权限操作字符串如上所述。- 参数
-
url
- url字符串 -
actions
- 操作字符串 - 异常
-
IllegalArgumentException
- 如果url无效或者操作包含空格。
-
URLPermission
public URLPermission(String url)
通过调用两个参数构造函数,使用给定的url字符串和不受限制的方法以及请求标头创建URLPermission,如下所示:URLPermission(url,“*:*”)- 参数
-
url
- 网址字符串 - 异常
-
IllegalArgumentException
- 如果url未生成有效的URI
-
-
方法详细信息
-
getActions
public String getActions()
返回规范化方法列表和请求标头列表,格式如下:"method-names : header-names"
其中method-names是以逗号和header-names分隔的方法列表,是以逗号分隔的允许标头列表。 返回的String中没有空格。 如果header-names为空,则可能不存在冒号分隔符。
- Specified by:
-
getActions
在类Permission
- 结果
- 本许可的行为。
-
implies
public boolean implies(Permission p)
检查此URLPermission是否暗示给定的权限。 具体来说,完成以下检查,就像按以下顺序进行:- 如果'p'不是URLPermission的实例,则返回false
- 如果任何p的方法不在此方法列表中,并且此方法列表不等于“*”,则返回false。
- 如果任何p的头不在此请求头列表中,并且此请求头列表不等于“*”,则返回false。
- 如果这个url方案不等于p的url方案返回false
- 如果此url的方案特定部分为'*',则返回true
- 如果由p的url hostrange定义的主机集不是这个url hostrange的子集,则返回false。 例如,“* .foo.oracle.com”是“* .oracle.com”的子集。 “foo.bar.oracle.com”不是“* .foo.oracle.com”的子集
- 如果p的url定义的portrange不是这个url定义的portrange的子集,则返回false。
- 如果p的url指定的路径包含在这个url指定的路径集中,则返回true
- 否则,返回false
路径匹配方式的一些示例如下所示:
Examples of Path Matching this's path p's path 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- Specified by:
-
implies
在类Permission
- 参数
-
p
- 要检查的权限。 - 结果
- 如果此对象隐含指定的权限,则返回true,否则返回false。
-
equals
public boolean equals(Object p)
如果,this.getActions()。equals(p.getActions())和p的url等于这个url,则返回true。 否则返回false。- Specified by:
-
equals
在类Permission
- 参数
-
p
- 我们正在测试与此对象相等的对象。 - 结果
- 如果两个Permission对象都是等效的,则为true。
- 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
返回根据actions String和url字符串的哈希码计算的哈希码。- Specified by:
-
hashCode
在类Permission
- 结果
- 此对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
-