Mojo::Headers

作者: JSON_NULL | 来源:发表于2017-09-30 10:11 被阅读9次

    简介

    use Mojo::Headers;
    
    # Parse
    my $headers = Mojo::Headers->new;
    $headers->parse("Content-Length: 42\x0d\x0a");
    $headers->parse("Content-Type: text/html\x0d\x0a\x0d\x0a");
    say $headers->content_length;
    say $headers->content_type;
    
    # Build
    my $headers = Mojo::Headers->new;
    $headers->content_length(42);
    $headers->content_type('text/plain');
    say $headers->to_string;
    

    Mojo :: Headers是基于RFC 7230和RFC 7231的 HTTP头的容器。

    属性

    Mojo::Headers实现了以下属性。

    max_line_size

    my $size = $headers->max_line_size;
    $headers = $headers->max_line_size(1024);
    

    获取或设置HTTP头中每一项的最大长度,以字节为单位。默认使用MOJO_MAX_LINE_SIZE环境变量的值或8192(8KiB)。

    max_lines

    my $num  = $headers->max_lines;
    $headers = $headers->max_lines(200);
    

    获取或设置HTTP头部的最大行数,默认为MOJO_MAX_LINES环境变量的值或100。

    方法

    Mojo::Headers继承了Mojo::Base中的所有方法,并实现了以下方法。

    accept

    my $accept = $headers->accept;
    $headers   = $headers->accept('application/json');
    

    获取或设置HTTP头中Accept字段的值。

    accept_charset

    my $charset = $headers->accept_charset;
    $headers    = $headers->accept_charset('UTF-8');
    

    获取或设置HTTP头中Accept-Charset字段的值。

    accept_encoding

    my $encoding = $headers->accept_encoding;
    $headers     = $headers->accept_encoding('gzip');
    

    获取或设置HTTP头中Accept-Encoding字段的值。

    accept_language

    my $language = $headers->accept_language;
    $headers     = $headers->accept_language('de, en');
    

    获取或设置HTTP头中Accept-Language字段的值。

    accept_ranges

    my $ranges = $headers->accept_ranges;
    $headers   = $headers->accept_ranges('bytes');
    

    获取或设置HTTP头中Accept-Ranges字段的值。

    access_control_allow_origin

    my $origin = $headers->access_control_allow_origin;
    $headers   = $headers->access_control_allow_origin('*');
    

    获取或设置HTTP头中Access-Control-Allow-Origin字段的值。对跨域共享资源进行描述性配置。

    add

    $headers = $headers->add(Foo => 'one value');
    $headers = $headers->add(Foo => 'first value', 'second value');
    

    向HTTP头中添加配置行,可以为同一个HTTP头部字段添加一个或多个值。

    # "Vary: Accept
    #  Vary: Accept-Encoding"
    $headers->add(Vary => 'Accept')->add(Vary => 'Accept-Encoding')->to_string;
    

    allow

    my $allow = $headers->allow;
    $headers  = $headers->allow('GET, POST');
    

    获取或设置HTTP头中Allow字段的值。

    append

    $headers = $headers->append(Vary => 'Accept-Encoding');
    

    在HTTP头部字段的值后面(同一行)加入新的值。

    # "Vary: Accept"
    $headers->append(Vary => 'Accept')->to_string;
    
    # "Vary: Accept, Accept-Encoding"
    $headers->vary('Accept')->append(Vary => 'Accept-Encoding')->to_string;
    

    authorization

    my $authorization = $headers->authorization;
    $headers          = $headers->authorization('Basic Zm9vOmJhcg==');
    

    获取或设置HTTP头中Authorization字段的值。

    cache_control

    my $cache_control = $headers->cache_control;
    $headers          = $headers->cache_control('max-age=1, no-cache');
    

    获取或设置HTTP头中Cache-Control字段的值。

    clone

    my $clone = $headers->clone;
    

    复制出来一个与$headers完全一样的Mojo::Headers对象。

    connection

    my $connection = $headers->connection;
    $headers       = $headers->connection('close');
    

    获取或设置HTTP头中Connection字段的值。

    content_disposition

    my $disposition = $headers->content_disposition;
    $headers        = $headers->content_disposition('foo');
    

    获取或设置HTTP头中Content-Disposition字段的值。

    content_encoding

    my $encoding = $headers->content_encoding;
    $headers     = $headers->content_encoding('gzip');
    

    获取或设置HTTP头中Content-Encoding字段的值。

    content_language

    my $language = $headers->content_language;
    $headers     = $headers->content_language('en');
    

    获取或设置HTTP头中Content-Language字段的值。

    content_length

    my $len  = $headers->content_length;
    $headers = $headers->content_length(4000);
    

    获取或设置HTTP头中Content-Length字段的值。

    content_location

    my $location = $headers->content_location;
    $headers     = $headers->content_location('http://127.0.0.1/foo');
    

    获取或设置HTTP头中Content-Location字段的值。

    content_range

    my $range = $headers->content_range;
    $headers  = $headers->content_range('bytes 2-8/100');
    

    获取或设置HTTP头中Content-Range字段的值。

    content_security_policy

    my $policy = $headers->content_security_policy;
    $headers   = $headers->content_security_policy('default-src https:');
    

    获取或设置HTTP头中Content-Security-Policy字段的值。

    content_type

    my $type = $headers->content_type;
    $headers = $headers->content_type('text/plain');
    

    获取或设置HTTP头中Content-Type字段的值。

    cookie

    my $cookie = $headers->cookie;
    $headers   = $headers->cookie('f=b');
    

    获取或设置HTTP头中Cookie字段的值。

    date

    my $date = $headers->date;
    $headers = $headers->date('Sun, 17 Aug 2008 16:27:35 GMT');
    

    获取或设置HTTP头中Date字段的值。

    dnt

     my $dnt  = $headers->dnt;
    $headers = $headers->dnt(1);
    

    获取或设置HTTP头中DNT(Do Not Track)字段的值。这个头部字段虽然没有在HTTP的规范之中,但是非常有用。

    etag

    my $etag = $headers->etag;
    $headers = $headers->etag('"abc321"');
    

    获取或设置HTTP头中ETag 字段的值。

    every_header

    my $all = $headers->every_header('Location');
    

    header方法类似,但返回的是一个数组引用,里面包含共享同一HTTP头部字段的所有值。

    # Get first header value
    say $headers->every_header('Location')->[0];
    

    expect

    my $expect = $headers->expect;
    $headers   = $headers->expect('100-continue');
    

    获取或设置HTTP头中Expect字段的值。

    expires

    my $expires = $headers->expires;
    $headers    = $headers->expires('Thu, 01 Dec 1994 16:00:00 GMT');
    

    获取或设置HTTP头中Expires字段的值。

    from_hash

    $headers = $headers->from_hash({'Cookie' => 'a=b'});
    $headers = $headers->from_hash({'Cookie' => ['a=b', 'c=d']});
    $headers = $headers->from_hash({});
    

    从一个哈希引用解析HTTP头信息并设置HTTP头。如果传一个空哈希引用,则会清空当前Mojo::Headers对象中HTTP头的原有设置,如果传的是一个非空的哈希引用,则用把哈希引用中的内容添加到当前Mojo::Headers中。

    header

    my $value = $headers->header('Foo');
    $headers  = $headers->header(Foo => 'one value');
    $headers  = $headers->header(Foo => 'first value', 'second value');
    

    获取或设置指定的HTTP头部信息。

    host

    my $host = $headers->host;
    $headers = $headers->host('127.0.0.1');
    

    获取或设置HTTP头中Host字段的值。

    if_modified_since

    my $date = $headers->if_modified_since;
    $headers = $headers->if_modified_since('Sun, 17 Aug 2008 16:27:35 GMT');
    

    获取或设置HTTP头中If-Modified-Since字段的值。

    if_none_match

    my $etag = $headers->if_none_match;
    $headers = $headers->if_none_match('"abc321"');
    

    获取或设置HTTP头中If-None-Match字段的值。

    is_finished

    my $bool = $headers->is_finished;
    

    检查HTTP头是否解析完成。

    is_limit_exceeded

    my $bool = $headers->is_limit_exceeded;
    

    检查对HTTP头的设置是否超过了max_line_size和max_lines的限制。

    last_modified

    my $date = $headers->last_modified;
    $headers = $headers->last_modified('Sun, 17 Aug 2008 16:27:35 GMT');
    

    获取或设置HTTP头中Last-Modified字段的值。

    leftovers

    my $bytes = $headers->leftovers;
    

    从HTTP头获取并删除剩余的还没有被解析的数据。

    link

    my $link = $headers->link;
    $headers = $headers->link('<http://127.0.0.1/foo/3>; rel="next"');
    

    获取或设置HTTP头中Link字段的值。

    location

    my $location = $headers->location;
    $headers = $headers->location('http://127.0.0.1/foo');

    获取或设置HTTP头中Location字段的值。

    names

    my $names = $headers->names;
    

    返回一个数组的引用,里面包含所有已经设备的HTTP头的字段名。

    # Names of all headers
    say for @{$headers->names};
    

    origin

    my $origin = $headers->origin;
    $headers   = $headers->origin('http://example.com');
    

    获取或设置HTTP头中Origin字段的值。

    parse

    $headers = $headers->parse("Content-Type: text/plain\x0d\x0a\x0d\x0a");
    

    解析格式化的HTTP 头部信息。

    proxy_authenticate

    my $authorization = $headers->proxy_authorization;
    $headers          = $headers->proxy_authorization('Basic Zm9vOmJhcg==');
    

    获取或设置HTTP头中Proxy-Authorization字段的值。

    range

    my $range = $headers->range;
    $headers  = $headers->range('bytes=2-8');
    

    获取或设置HTTP头中Range字段的值。

    referrer

    my $referrer = $headers->referrer;
    $headers     = $headers->referrer('http://example.com');
    

    获取或设置HTTP头中Referer字段的值。因在RFC 2068中有一个打字错误,导致Referer成为官方HTTP头。

    remove

    $headers = $headers->remove('Foo');
    

    删除指定名称的HTTP头部。

    sec_websocket_accept

    my $accept = $headers->sec_websocket_accept;
    $headers   = $headers->sec_websocket_accept('s3pPLMBiTxaQ9kYGzzhZRbK+xOo=');
    

    获取或设置HTTP头中Sec-WebSocket-Accept字段的值。

    sec_websocket_extensions

    my $extensions = $headers->sec_websocket_extensions;
    $headers       = $headers->sec_websocket_extensions('foo');
    

    获取或设置HTTP头中Sec-WebSocket-Extensions字段的值。

    sec_websocket_key

    my $key  = $headers->sec_websocket_key;
    $headers = $headers->sec_websocket_key('dGhlIHNhbXBsZSBub25jZQ==');
    

    获取或设置HTTP头中Sec-WebSocket-Key字段的值。

    sec_websocket_protocol

    my $proto = $headers->sec_websocket_protocol;
    $headers  = $headers->sec_websocket_protocol('sample');
    

    获取或设置HTTP头中Sec-WebSocket-Protocol字段的值。

    sec_websocket_version

    my $version = $headers->sec_websocket_version;
    $headers    = $headers->sec_websocket_version(13);
    

    获取或设置HTTP头中Sec-WebSocket-Version字段的值。

    server

    my $server = $headers->server;
    $headers   = $headers->server('Mojo');
    

    获取或设置HTTP头中Server字段的值。

    set_cookie

    my $cookie = $headers->set_cookie;
    $headers   = $headers->set_cookie('f=b; path=/');
    

    获取或设置HTTP头中Set-Cookie字段的值。

    status

    my $status = $headers->status;
    $headers   = $headers->status('200 OK');
    

    获取或设置HTTP头中Status字段的值。

    strict_transport_security

    my $policy = $headers->strict_transport_security;
    $headers   = $headers->strict_transport_security('max-age=31536000');
    

    获取或设置HTTP头中Strict-Transport-Security字段的值。

    te

    my $te   = $headers->te;
    $headers = $headers->te('chunked');
    

    获取或设置HTTP头中TE字段的值。

    to_hash

    my $single = $headers->to_hash;
    my $multi  = $headers->to_hash(1);
    

    将Mojo::Headers对象中存储的HTTP头部信息转换为一个hashref类型的数据。默认情况下禁用相同名称的多个头部信息的数组引用形式。只有传一个true作为参数时才启用,启用后当一个HTTP头对应多个值时返回的hashref中对应的key指向的是一个数组的引用,数组引用中包含所有该HTTP头字段在当前Mojo::Headers对象中对应的值。禁用时,当一个HTTP头对应多个值时返回的hashref中对应key指向的是一个字符串,字符串中包含所有该HTTP头字符在当前Mojo::Headers对象中对应的值,各个值之间用逗号分隔。

    say $headers->to_hash->{DNT};
    

    to_string

    my $str = $headers->to_string;
    

    将Mojo::Headers对象转换成字符串,字符串可以直接用于HTTP头部信息。

    trailer

    my $trailer = $headers->trailer;
    $headers    = $headers->trailer('X-Foo');
    

    获取或设置HTTP头中Trailer字段的值。

    transfer_encoding

    my $encoding = $headers->transfer_encoding;
    $headers     = $headers->transfer_encoding('chunked');
    

    获取或设置HTTP头中Transfer-Encoding字段的值。

    upgrade

    my $upgrade = $headers->upgrade;
    $headers    = $headers->upgrade('websocket');
    

    获取或设置HTTP头中Upgrade字段的值。

    user_agent

    my $agent = $headers->user_agent;
    $headers  = $headers->user_agent('Mojo/1.0');
    

    获取或设置HTTP头中User-Agent字段的值。

    vary

    my $vary = $headers->vary;
    $headers = $headers->vary('*');
    

    获取或设置HTTP头中Vary字段的值。

    www_authenticate

    my $authenticate = $headers->www_authenticate;
    $headers         = $headers->www_authenticate('Basic realm="realm"');
    

    获取或设置HTTP头中WWW-Authenticate字段的值。

    相关文章

      网友评论

        本文标题:Mojo::Headers

        本文链接:https://www.haomeiwen.com/subject/nohgextx.html