使用 URLRequest 类可定义的内容不再仅仅局限于 URL 字符串。AIR 向 URLRequest 类添加了一些新属性,这些属性只可用于应用程序安全沙箱中运行的 AIR 内容。运行时中的内容可以使用新的 URL 方案(file 和 http 等标准方案除外)来定义 URL。
URLRequest 属性
URLRequest 类包括以下只可用于 AIR 应用程序安全沙箱中的内容的属性:
属性 | 说明 |
---|---|
followRedirects | 指定是否要遵循重定向(默认值为 true;如果不遵循,则为 false)。仅在运行时中支持此属性。 |
manageCookies | 指定 HTTP 协议堆栈是否应管理此请求的 cookie(默认值为 true;如果不管理,则为 false)。仅在运行时中支持此属性。 |
authenticate | 指定是否应为此请求处理身份验证请求(如果是,则为 true)。仅在运行时中支持此属性。默认值为对请求进行身份验证 — 如果服务器要求显示凭据,则可能会显示身份验证对话框。还可以设置用户名和密码,请参阅设置 URLRequest 默认值。 |
cacheResponse | 指定是否应为此请求缓存成功的响应数据。仅在运行时中支持此属性。默认值为缓存响应 (true)。 |
useCache | 指定在此 URLRequest 获取数据之前是否应查询本地缓存。仅在运行时中支持此属性。默认值 (true) 为使用本地缓存版本(如果可用)。 |
userAgent | 指定要在 HTTP 请求中使用的用户代理字符串。 |
URLRequest 对象的以下属性可以通过任何沙箱(不仅是 AIR 应用程序安全沙箱)中的内容进行设置:
属性 | 说明 |
---|---|
contentType | 使用 URL 请求发送的任何数据的 MIME 内容类型。 |
data | 一个对象,它包含将随 URL 请求一起传输的数据。 |
digest | 对缓存文件的安全“摘要”,用于跟踪 Adobe® Flash® Player 缓存。 |
method | 控制 HTTP 请求方法,例如 GET 或 POST 操作。(AIR 应用程序安全域中运行的内容可以指定 "GET" 或 "POST" 之外的字符串作为 method 属性。允许使用任何 HTTP 动词,"GET" 为默认方法。请参阅 AIR 安全性。) |
requestHeaders | 要追加到 HTTP 请求的 HTTP 请求标头的数组。 |
url | 指定要请求的 URL。 |
设置 URLRequest 默认值
通过 URLRequestDefaults 类,可以定义 URLRequest 对象的默认设置。例如,以下代码设置 manageCookies 和 useCache 属性的默认值:
URLRequestDefaults.manageCookies = false; URLRequestDefaults.useCache = false;
URLRequestDefaults 类包含 setLoginCredentialsForHost() 方法,使用该方法可指定要用于特定主机的默认用户名和密码。该方法的 hostname 参数中定义的主机可以为域(如 "www.example.com")或域和端口号(如 "www.example.com:80")。请注意,"example.com"、"www.example.com" 和 "sales.example.com" 均视为各自唯一的主机。
只有在服务器要求提供凭据时才会使用这些凭据。如果用户已进行了身份验证(例如,通过使用身份验证对话框),则无法通过调用 setLoginCredentialsForHost() 方法来更改已进行身份验证的用户。
例如,以下代码设置要在 www.example.com 上使用的默认用户名和密码:
URLRequestDefaults.setLoginCredentialsForHost("www.example.com", "Ada", "love1816$X");
URLRequestDefaults 设置的各个属性仅应用于设置该属性的内容所在的应用程序域。而 setLoginCredentialsForHost() 方法则适用于 AIR 应用程序内所有应用程序域中的内容。通过此方法,应用程序可以使用指定的凭据登录到主机,并从而登录应用程序中的所有 内容。
有关详细信息,请参阅 ActionScript 3.0 语言和组件参考 (http://www.adobe.com/go/learn_air_aslr_cn) 中的 URLRequestDefaults 类。
在 URL 中使用 AIR URL 方案
在 AIR 的任何安全沙箱中定义 URL 时,可以使用以下标准 URL 方案:
http: 和 https:
使用方法同 Web 浏览器中的用法。
file:
使用此方案可指定相对于文件系统根目录的相对路径。例如:
file:///c:/AIR Test/test.txt
为应用程序安全沙箱中运行的内容定义 URL 时,还可以使用以下方案:
app:
使用此方案可指定相对于应用程序安装根目录(包含安装的应用程序的应用程序描述符文件的目录)的相对路径。例如,以下路径指向应用程序安装目录的 resources 子目录:
app:/resources
当在 ADL 应用程序中运行时,应用程序资源目录设置为包含应用程序描述符文件的目录。
app-storage:
使用此方案可指定相对于应用程序存储目录的相对路径。对于安装的每个应用程序,AIR 为每个用户都定义了唯一的应用程序存储目录,这些目录对于存储特定于各个应用程序的数据非常有用。例如,以下路径指向应用程序存储目录的 settings 子目录中的 prefs.xml 文件:
app-storage:/settings/prefs.xml
应用程序存储目录的位置由用户名、应用程序 ID 和发布者 ID 共同确定:
-
在 Mac OS 中,位于:
/Users/用户名/Library/Preferences/应用程序 ID.发行商 ID/Local Store/
例如:
/Users/babbage/Library/Preferences/com.example.TestApp.02D88EEED35F84C264A183921344EEA353A629FD.1/Local Store
-
在 Windows 中,位于 Documents and Settings 目录下的以下位置:
用户名/Application Data/应用程序 ID.发行商 ID/Local Store/
例如:
C:\Documents and Settings\babbage\Application Data\com.example.TestApp.02D88EEED35F84C264A183921344EEA353A629FD.1\Local Store
-
在 Linux 中位于:
/home/用户名/.appdata/应用程序 ID.发行商 ID/Local Store/
例如:
/home/babbage/.appdata/com.example.TestApp.02D88EEED35F84C264A183921344EEA353A629FD.1\Local Store
通过 File.applicationStorageDirectory 创建的 File 对象的 的URL(以及 url 属性)使用 app-storage URL 方案,如下所示:
var dir:File = File.applicationStorageDirectory; dir = dir.resolvePath("preferences"); trace(dir.url); // app-storage:/preferences
mailto:
在传递给 navigateToURL() 函数的 URLRequest 对象中可以使用 mailto 方案。请参阅在默认系统 Web 浏览器中打开 URL。
在 AIR 中使用 URL 方案
可以借助使用了以上任意 URL 方案的 URLRequest 对象来定义许多其它对象(例如 FileStream 或 Sound 对象)的 URL 请求。还可以在 AIR 中运行的 HTML 内容中使用这些方案;例如,可以在 img 标签的 src 属性中使用它们。
但在应用程序安全沙箱中的内容中,只能使用这些特定于 AIR 的 URL 方案(app: 和 app-storage:)。有关详细信息,请参阅 AIR 安全性。
禁止的 URL 方案
某些 API 允许在 Web 浏览器中启动内容。出于安全方面的考虑,在 AIR 中使用这些 API 时将禁止某些 URL 方案。禁止的方案列表取决于使用 API 的代码所在的安全沙箱。有关详细信息,请参阅在默认系统 Web 浏览器中打开 URL。
对 URLStream 类所做的更改
<!-- END PAGE TITLE --><!-- BEGIN IONCOMMENTCOUNT --><!-- END IONCOMMENTCOUNT -->URLStream 类为从 URL 下载数据提供低级访问。在运行时中,URLStream 类包含一个新事件 httpResponseStatus。与 httpStatus 事件不同,httpResponseStatus 事件在传送任何响应数据之前传送。httpResponseStatus 事件(在 HTTPStatusEvent 类中定义)包含 responseURL 属性(从中返回响应的 URL)和 responseHeaders 属性(表示响应返回的响应标头的 URLRequestHeader 对象的数组)。
在默认系统 Web 浏览器中打开 URL
<!-- END PAGE TITLE --><!-- BEGIN IONCOMMENTCOUNT --><!-- END IONCOMMENTCOUNT -->可以使用 navigateToURL() 函数在默认系统 Web 浏览器中打开 URL。对于作为此函数的 request 参数传递的 URLRequest 对象,仅使用 url 属性。
使用 navigateToURL() 函数时,将根据调用 navigateToURL() 函数的代码所在的安全沙箱来允许 URL 方案。
某些 API 允许在 Web 浏览器中启动内容。出于安全方面的考虑,在 AIR 中使用这些 API 时将禁止某些 URL 方案。禁止的方案列表取决于使用 API 的代码所在的安全沙箱。(有关安全沙箱的详细信息,请参阅 AIR 安全性。)
应用程序沙箱
允许以下方案。使用方法同 Web 浏览器中的用法。
-
http:
-
https:
-
file:
-
mailto: — AIR 将这些请求指向注册的系统邮件应用程序
-
app:
-
app-storage:
禁止其它所有 URL 方案。
远程沙箱
允许以下方案。使用方法同 Web 浏览器中的用法。
-
http:
-
https:
-
mailto: — AIR 将这些请求指向注册的系统邮件应用程序
禁止其它所有 URL 方案。
只能与本地文件系统内容交互的沙箱
允许以下方案。使用方法同 Web 浏览器中的用法。
-
file:
-
mailto: — AIR 将这些请求指向注册的系统邮件应用程序
禁止其它所有 URL 方案。
只能与远程内容交互的沙箱
允许以下方案。使用方法同 Web 浏览器中的用法。
-
http:
-
https:
-
mailto: — AIR 将这些请求指向注册的系统邮件应用程序
禁止其它所有 URL 方案。
受信任的本地沙箱
允许以下方案。使用方法同 Web 浏览器中的用法。
-
file:
-
http:
-
https:
-
mailto: — AIR 将这些请求指向注册的系统邮件应用程序
禁止其它所有 URL 方案。