zoukankan      html  css  js  c++  java
  • HTTP Headers

    HTTP Headers--类封装HTTP消息头:
    
    require HTTP::Headers;
     $h = HTTP::Headers->new;
    
     $h->header('Content-Type' => 'text/plain');  # set
     $ct = $h->header('Content-Type');            # get
     $h->remove_header('Content-Type');           # delete
    
    
    描述:
    
    
    HTTP::Headers class 类封装了HTTP-style 消息的headers. the headers 有属性值对也叫做字段组成,
    
    
    可以是重复的,可以是按特定的顺序。 字段名字是不区分的,
    
    
    这个类的实例是通常用于创建HTTP::Request and HTTP::Response类的成员变量,内部类
    
    
    下面的方法是可用的:
    
    $h = HTTP::Headers->new
    
    
    构造一个新的 HTTP::Headers对象。你可以通过一些初始属性值对作为参数传递到构造。
    
    
     $h = HTTP::Headers->new(
           Date         => 'Thu, 03 Feb 1994 00:00:00 GMT',
           Content_Type => 'text/html; version=3.2',
           Content_Base => 'http://www.perl.org/');
    
    
    
    
    构造的参数被传递到header方法,描述如下:
    
    $h->clone
    
    返回一个HTTP::Headers object.的拷贝
    
    $h->header( $field )
    $h->header( $field => $value )
    $h->header( $f1 => $v1, $f2 => $v2, ... )
    
    
    
    Get 或者设置一个或者多个header 域的值。 header firld 名字($field) 是不区分大小写的,
    
    为了生活更容易对于Perl 用户 需要避免引用在=>操作符前,你可以使用'_' 作为替换'-' 在header names里
    
    
    header() 方法接收多个($field => $value)对,这意味着你可以用单个请求更新多个域值
    
    
    $value 参数可能是一个纯字符串或者而一个引用到一个字符串数组。
    
    
    如果$value 是被提供为undef 那么域值会被删除, 如果$value 没有给定,那么header 域仍旧保持不变。
    
    
    最后的header firlds 的老的值(或者值组)返回后,如果没有这样的域存在 undef会被返回。
    
    
    一个多值域会被返回作为单独的值在列表开和回被连接用"," 作为标量上下文的分隔符。
    
    HTTP 规范(RFC 2616)允许连接多个值以这种方式不会改变header 域的语义,
    
    
    但在实践中有类似的老式的cookies(see HTTP::Cookies) ","是用于作为语法的一部分在单个域值里
    
    Examples:
    
     $header->header(MIME_Version => '1.0',
                     User_Agent   => 'My-Web-Client/0.01');
     $header->header(Accept => "text/html, text/plain, image/*");
     $header->header(Accept => [qw(text/html text/plain image/*)]);
     @accepts = $header->header('Accept');  # get multiple values
     $accepts = $header->header('Accept');  # get values as a single string
    
    
    $h->push_header( $field => $value )
    $h->push_header( $f1 => $v1, $f2 => $v2, ... )
    
    
    为一个指定的header 域增加一个新的域值,先前的值对于相同的域是被保留的。
    
    
    至于header()方法,域值($field) 是不区分大小洗的,"_" 可以用来替代"-"
    
    
    $value 的值可以是一个标量或者而一个标量数组的引用
    
     $header->push_header(Accept => 'image/jpeg');
     $header->push_header(Accept => [map "image/$_", qw(gif png tiff)]);
    
    $h->init_header( $field => $value )
    
    
    设置特定的header 对于给定的值,但是只有没有先前的值(域被设置)
    
    
    header 域名字($field) 是不区分大小写的,'_' 可以用来替换"-"
    
    
    $value 参数可以是一个标量或者一个标量数组的引用
    
    $h->remove_header( $field, ... )
    
    这个函数删除指定的header 域
    
    header 域名字($field) 是不区分大小写的,"_" 可以用来替换"-"
    
    
    返回值是域被删除的值,在标量上下面 返回的是删除的域的数目
    
    zjzc01:/root/perl# cat t1.pl 
    require HTTP::Headers;
     $h = HTTP::Headers->new(
           Date         => 'Thu, 03 Feb 1994 00:00:00 GMT',
           Content_Type => 'text/html; version=3.2',
           Content_Base => 'http://www.perl.org/');
    print $h->remove_header( Date );
    zjzc01:/root/perl# perl t1.pl 
    Thu, 03 Feb 1994 00:00:00 GMTzjzc01:/root/perl# 
    zjzc01:/root/perl# perl t1.pl 
    
    
    便利方法:
    
    最经常被使用的headers 可以通过以下方式访问。 大多数方法可以用于read和设置header 的值。
    
    
    header 值是被设置如果你传递一个参数到这个方法。老的header值也会被返回,
    
    如果给定的header 不存在 那么返回undef
    
    
    zjzc01:/root/perl# cat t1.pl 
    require HTTP::Headers;
     $h = HTTP::Headers->new(
           Date         => 'Thu, 03 Feb 1994 00:00:00 GMT',
           Content_Type => 'text/html; version=3.2',
           Content_Base => 'http://www.perl.org/');
    $h->push_header( Date => 'xxxx' );
    print $h->header( Date );
    zjzc01:/root/perl# perl t1.pl 
    Thu, 03 Feb 1994 00:00:00 GMTxxxxzjzc01:/root/perl# 
    
    
    处理时间的方法总是转换它们的值为system time (seconds since Jan 1, 1970) 
    
    它们也总是期望这种类型的值当header value被设置
    
    $h->date
    
    
    header 表明了日期和时间
    
    $h->date(time);  # set current date
    
    
    $h->expires header 给出了date和time 实体应该被考虑为过期的
    
    
    $h->if_modified_since
    $h->if_unmodified_since
    
    
    
    
    那些 header 域 是用于一个请求条件,如果请求的资源已经被修改自从域中指定的时间,
    
    server 会返回一个304 不修改响应代替文档本身
    
    
    
    
    
    
    
    

  • 相关阅读:
    ExtJs之Grid
    [java]转:String Date Calendar之间的转换
    SQL Server脚本备份
    Java实现文件夹的复制(包括子文件夹与文件)
    Android webview使用详解
    zxing条码扫描横屏修改
    Genymotion的安装与eclipse配置教程
    开发中遇到的问题
    sql中COUNT()+GROUP BY +HAVING的组合使用
    由于包名与引用的库名相同导致的报错
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351139.html
Copyright © 2011-2022 走看看