flash.net
public final class URLRequestHeader
继承URLRequestHeader Inheritance Object

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

URLRequestHeader 对象封装了一个 HTTP 请求标头并由一个名称/值对组成。URLRequestHeader 对象在 URLRequest 类的 requestHeaders 属性中使用。

在 Adobe® AIR 中,应用程序安全沙箱中的内容(如使用 AIR 应用程序安装的内容)可以使用任何请求标头而不会出错。不过,对于在 Adobe AIR 中运行的不同安全沙箱中的内容,使用以下请求标头将会引发运行时错误,且限制的术语不区分大小写(例如,GetgetGET 均不得使用):

在应用程序安全沙箱以外的 Flash Player 和 Adobe AIR 内容中,不能使用以下请求标头,且限制的术语不区分大小写(例如,GetgetGET 均不得使用)。另外,如果使用下划线字符,这也适用于带连字符的词(例如,不允许使用 Content-LengthContent_Length):

Accept-CharsetAccept-EncodingAccept-RangesAgeAllowAllowedAuthorizationCharge-ToConnectConnectionContent-LengthContent-LocationContent-RangeCookieDateDeleteETagExpectGetHeadHostKeep-AliveLast-ModifiedLocationMax-ForwardsOptionsPostProxy-AuthenticateProxy-AuthorizationProxy-ConnectionPublicPutRangeRefererRequest-RangeRetry-AfterServerTETraceTrailerTransfer-EncodingUpgradeURIUser-AgentVaryViaWarningWWW-Authenticatex-flash-version

URLRequestHeader 对象的长度是受限制的。如果 URLRequestHeader 对象的累计长度(name 属性的长度加 value 属性的长度)或 URLRequest.requestHeaders 属性中使用的 URLRequestHeader 对象数组超过可接受的长度,则应用程序将引发异常。

除非为 URLRequest 类的 requestHeaders 属性中的 ACCEPT 标头指定设置,否则,在 Adobe AIR 中运行的内容会将 ACCEPT 标头设置为以下值:

text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, image/png, application/x-shockwave-flash, video/mp4;q=0.9, flv-application/octet-stream;q=0.8, video/x-flv;q=0.7, audio/mp4, */*;q=0.5

并非所有接受 URLRequest 参数的方法都支持 requestHeaders 属性,请参阅有关调用的方法的文档。例如,FileReference.upload()FileReference.download() 方法不支持 URLRequest.requestHeaders 属性。

由于存在浏览器限制,因此仅对 POST 请求支持自定义 HTTP 请求标头,而对 GET 请求不提供相应支持。

查看示例

另请参见

URLRequest
URLLoader


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  name : String
HTTP 请求标头名称(例如 Content-Type 或 SOAPAction)。
URLRequestHeader
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  value : String
与 name 属性相关联的值(如 text/plain)。
URLRequestHeader
公共方法
 方法定义方
  
URLRequestHeader(name:String = "", value:String = "")
创建一个封装单个 HTTP 请求标头的新 URLRequestHeader 对象。
URLRequestHeader
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
属性详细信息
name属性
public var name:String

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

HTTP 请求标头名称(如 Content-TypeSOAPAction)。

value属性 
public var value:String

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

name 属性相关联的值(如 text/plain)。

构造函数详细信息
URLRequestHeader()构造函数
public function URLRequestHeader(name:String = "", value:String = "")

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

创建一个封装单个 HTTP 请求标头的新 URLRequestHeader 对象。URLRequestHeader 对象在 URLRequest 类的 requestHeaders 属性中使用。

参数
name:String (default = "") — HTTP 请求标头名称(如 Content-TypeSOAPAction)。
 
value:String (default = "") — 与 name 属性相关联的值(如 text/plain)。
示例 如何使用示例
URLRequestHeaderExample.as

下例将 HTTP 请求标头 header 添加到 requestHeaders 属性的数组中。 该标头指出,即使应用程序具有所请求内容的缓存副本,也应当将请求转发给原始服务器。
package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.net.URLRequestHeader;
    import flash.net.URLRequestMethod;
    import flash.net.URLVariables;

    public class URLRequestHeaderExample extends Sprite {
        public function URLRequestHeaderExample() {
            var loader:URLLoader = new URLLoader();
            configureListeners(loader);

            var header:URLRequestHeader = new URLRequestHeader("pragma", "no-cache");
            var request:URLRequest = new URLRequest("http://www.[yourdomain].com/greeting.cfm");
            request.data = new URLVariables("name=John+Doe");
            request.method = URLRequestMethod.POST;
            request.requestHeaders.push(header);
            try {
                loader.load(request);
            } catch (error:Error) {
                trace("Unable to load requested document.");
            }
        }

        private function configureListeners(dispatcher:IEventDispatcher):void {
            dispatcher.addEventListener(Event.COMPLETE, completeHandler);
            dispatcher.addEventListener(Event.OPEN, openHandler);
            dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
            dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
            dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
        }

        private function completeHandler(event:Event):void {
            var loader:URLLoader = URLLoader(event.target);
            trace("completeHandler: " + loader.data);
        }

        private function openHandler(event:Event):void {
            trace("openHandler: " + event);
        }

        private function progressHandler(event:ProgressEvent):void {
            trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
        }

        private function securityErrorHandler(event:SecurityErrorEvent):void {
            trace("securityErrorHandler: " + event);
        }

        private function httpStatusHandler(event:HTTPStatusEvent):void {
            trace("httpStatusHandler: " + event);
        }

        private function ioErrorHandler(event:IOErrorEvent):void {
            trace("ioErrorHandler: " + event);
        }
    }
}