1Mojo::Headers(3)      User Contributed Perl Documentation     Mojo::Headers(3)
2
3
4

NAME

6       Mojo::Headers - HTTP headers
7

SYNOPSIS

9         use Mojo::Headers;
10
11         # Parse
12         my $headers = Mojo::Headers->new;
13         $headers->parse("Content-Length: 42\x0d\x0a");
14         $headers->parse("Content-Type: text/html\x0d\x0a\x0d\x0a");
15         say $headers->content_length;
16         say $headers->content_type;
17
18         # Build
19         my $headers = Mojo::Headers->new;
20         $headers->content_length(42);
21         $headers->content_type('text/plain');
22         say $headers->to_string;
23

DESCRIPTION

25       Mojo::Headers is a container for HTTP headers, based on RFC 7230
26       <https://tools.ietf.org/html/rfc7230> and RFC 7231
27       <https://tools.ietf.org/html/rfc7231>.
28

ATTRIBUTES

30       Mojo::Headers implements the following attributes.
31
32   max_line_size
33         my $size = $headers->max_line_size;
34         $headers = $headers->max_line_size(1024);
35
36       Maximum header line size in bytes, defaults to the value of the
37       "MOJO_MAX_LINE_SIZE" environment variable or 8192 (8KiB).
38
39   max_lines
40         my $num  = $headers->max_lines;
41         $headers = $headers->max_lines(200);
42
43       Maximum number of header lines, defaults to the value of the
44       "MOJO_MAX_LINES" environment variable or 100.
45

METHODS

47       Mojo::Headers inherits all methods from Mojo::Base and implements the
48       following new ones.
49
50   accept
51         my $accept = $headers->accept;
52         $headers   = $headers->accept('application/json');
53
54       Get or replace current header value, shortcut for the "Accept" header.
55
56   accept_charset
57         my $charset = $headers->accept_charset;
58         $headers    = $headers->accept_charset('UTF-8');
59
60       Get or replace current header value, shortcut for the "Accept-Charset"
61       header.
62
63   accept_encoding
64         my $encoding = $headers->accept_encoding;
65         $headers     = $headers->accept_encoding('gzip');
66
67       Get or replace current header value, shortcut for the "Accept-Encoding"
68       header.
69
70   accept_language
71         my $language = $headers->accept_language;
72         $headers     = $headers->accept_language('de, en');
73
74       Get or replace current header value, shortcut for the "Accept-Language"
75       header.
76
77   accept_ranges
78         my $ranges = $headers->accept_ranges;
79         $headers   = $headers->accept_ranges('bytes');
80
81       Get or replace current header value, shortcut for the "Accept-Ranges"
82       header.
83
84   access_control_allow_origin
85         my $origin = $headers->access_control_allow_origin;
86         $headers   = $headers->access_control_allow_origin('*');
87
88       Get or replace current header value, shortcut for the
89       "Access-Control-Allow-Origin" header from Cross-Origin Resource Sharing
90       <https://www.w3.org/TR/cors/>.
91
92   add
93         $headers = $headers->add(Foo => 'one value');
94         $headers = $headers->add(Foo => 'first value', 'second value');
95
96       Add header with one or more lines.
97
98         # "Vary: Accept
99         #  Vary: Accept-Encoding"
100         $headers->add(Vary => 'Accept')->add(Vary => 'Accept-Encoding')->to_string;
101
102   allow
103         my $allow = $headers->allow;
104         $headers  = $headers->allow('GET, POST');
105
106       Get or replace current header value, shortcut for the "Allow" header.
107
108   append
109         $headers = $headers->append(Vary => 'Accept-Encoding');
110
111       Append value to header and flatten it if necessary.
112
113         # "Vary: Accept"
114         $headers->append(Vary => 'Accept')->to_string;
115
116         # "Vary: Accept, Accept-Encoding"
117         $headers->vary('Accept')->append(Vary => 'Accept-Encoding')->to_string;
118
119   authorization
120         my $authorization = $headers->authorization;
121         $headers          = $headers->authorization('Basic Zm9vOmJhcg==');
122
123       Get or replace current header value, shortcut for the "Authorization"
124       header.
125
126   cache_control
127         my $cache_control = $headers->cache_control;
128         $headers          = $headers->cache_control('max-age=1, no-cache');
129
130       Get or replace current header value, shortcut for the "Cache-Control"
131       header.
132
133   clone
134         my $clone = $headers->clone;
135
136       Return a new Mojo::Headers object cloned from these headers.
137
138   connection
139         my $connection = $headers->connection;
140         $headers       = $headers->connection('close');
141
142       Get or replace current header value, shortcut for the "Connection"
143       header.
144
145   content_disposition
146         my $disposition = $headers->content_disposition;
147         $headers        = $headers->content_disposition('foo');
148
149       Get or replace current header value, shortcut for the
150       "Content-Disposition" header.
151
152   content_encoding
153         my $encoding = $headers->content_encoding;
154         $headers     = $headers->content_encoding('gzip');
155
156       Get or replace current header value, shortcut for the
157       "Content-Encoding" header.
158
159   content_language
160         my $language = $headers->content_language;
161         $headers     = $headers->content_language('en');
162
163       Get or replace current header value, shortcut for the
164       "Content-Language" header.
165
166   content_length
167         my $len  = $headers->content_length;
168         $headers = $headers->content_length(4000);
169
170       Get or replace current header value, shortcut for the "Content-Length"
171       header.
172
173   content_location
174         my $location = $headers->content_location;
175         $headers     = $headers->content_location('http://127.0.0.1/foo');
176
177       Get or replace current header value, shortcut for the
178       "Content-Location" header.
179
180   content_range
181         my $range = $headers->content_range;
182         $headers  = $headers->content_range('bytes 2-8/100');
183
184       Get or replace current header value, shortcut for the "Content-Range"
185       header.
186
187   content_security_policy
188         my $policy = $headers->content_security_policy;
189         $headers   = $headers->content_security_policy('default-src https:');
190
191       Get or replace current header value, shortcut for the
192       "Content-Security-Policy" header from Content Security Policy 1.0
193       <https://www.w3.org/TR/CSP/>.
194
195   content_type
196         my $type = $headers->content_type;
197         $headers = $headers->content_type('text/plain');
198
199       Get or replace current header value, shortcut for the "Content-Type"
200       header.
201
202   cookie
203         my $cookie = $headers->cookie;
204         $headers   = $headers->cookie('f=b');
205
206       Get or replace current header value, shortcut for the "Cookie" header
207       from RFC 6265 <https://tools.ietf.org/html/rfc6265>.
208
209   date
210         my $date = $headers->date;
211         $headers = $headers->date('Sun, 17 Aug 2008 16:27:35 GMT');
212
213       Get or replace current header value, shortcut for the "Date" header.
214
215   dehop
216         $headers = $headers->dehop;
217
218       Remove hop-by-hop headers that should not be retransmitted.
219
220   dnt
221         my $dnt  = $headers->dnt;
222         $headers = $headers->dnt(1);
223
224       Get or replace current header value, shortcut for the "DNT" (Do Not
225       Track) header, which has no specification yet, but is very commonly
226       used.
227
228   etag
229         my $etag = $headers->etag;
230         $headers = $headers->etag('"abc321"');
231
232       Get or replace current header value, shortcut for the "ETag" header.
233
234   every_header
235         my $all = $headers->every_header('Location');
236
237       Similar to "header", but returns all headers sharing the same name as
238       an array reference.
239
240         # Get first header value
241         say $headers->every_header('Location')->[0];
242
243   expect
244         my $expect = $headers->expect;
245         $headers   = $headers->expect('100-continue');
246
247       Get or replace current header value, shortcut for the "Expect" header.
248
249   expires
250         my $expires = $headers->expires;
251         $headers    = $headers->expires('Thu, 01 Dec 1994 16:00:00 GMT');
252
253       Get or replace current header value, shortcut for the "Expires" header.
254
255   from_hash
256         $headers = $headers->from_hash({'Cookie' => 'a=b'});
257         $headers = $headers->from_hash({'Cookie' => ['a=b', 'c=d']});
258         $headers = $headers->from_hash({});
259
260       Parse headers from a hash reference, an empty hash removes all headers.
261
262   header
263         my $value = $headers->header('Foo');
264         $headers  = $headers->header(Foo => 'one value');
265         $headers  = $headers->header(Foo => 'first value', 'second value');
266
267       Get or replace the current header values.
268
269   host
270         my $host = $headers->host;
271         $headers = $headers->host('127.0.0.1');
272
273       Get or replace current header value, shortcut for the "Host" header.
274
275   if_modified_since
276         my $date = $headers->if_modified_since;
277         $headers = $headers->if_modified_since('Sun, 17 Aug 2008 16:27:35 GMT');
278
279       Get or replace current header value, shortcut for the
280       "If-Modified-Since" header.
281
282   if_none_match
283         my $etag = $headers->if_none_match;
284         $headers = $headers->if_none_match('"abc321"');
285
286       Get or replace current header value, shortcut for the "If-None-Match"
287       header.
288
289   is_finished
290         my $bool = $headers->is_finished;
291
292       Check if header parser is finished.
293
294   is_limit_exceeded
295         my $bool = $headers->is_limit_exceeded;
296
297       Check if headers have exceeded "max_line_size" or "max_lines".
298
299   last_modified
300         my $date = $headers->last_modified;
301         $headers = $headers->last_modified('Sun, 17 Aug 2008 16:27:35 GMT');
302
303       Get or replace current header value, shortcut for the "Last-Modified"
304       header.
305
306   leftovers
307         my $bytes = $headers->leftovers;
308
309       Get and remove leftover data from header parser.
310
311   link
312         my $link = $headers->link;
313         $headers = $headers->link('<http://127.0.0.1/foo/3>; rel="next"');
314
315       Get or replace current header value, shortcut for the "Link" header
316       from RFC 5988 <https://tools.ietf.org/html/rfc5988>.
317
318   location
319         my $location = $headers->location;
320         $headers     = $headers->location('http://127.0.0.1/foo');
321
322       Get or replace current header value, shortcut for the "Location"
323       header.
324
325   names
326         my $names = $headers->names;
327
328       Return an array reference with all currently defined headers.
329
330         # Names of all headers
331         say for @{$headers->names};
332
333   origin
334         my $origin = $headers->origin;
335         $headers   = $headers->origin('http://example.com');
336
337       Get or replace current header value, shortcut for the "Origin" header
338       from RFC 6454 <https://tools.ietf.org/html/rfc6454>.
339
340   parse
341         $headers = $headers->parse("Content-Type: text/plain\x0d\x0a\x0d\x0a");
342
343       Parse formatted headers.
344
345   proxy_authenticate
346         my $authenticate = $headers->proxy_authenticate;
347         $headers         = $headers->proxy_authenticate('Basic "realm"');
348
349       Get or replace current header value, shortcut for the
350       "Proxy-Authenticate" header.
351
352   proxy_authorization
353         my $authorization = $headers->proxy_authorization;
354         $headers          = $headers->proxy_authorization('Basic Zm9vOmJhcg==');
355
356       Get or replace current header value, shortcut for the
357       "Proxy-Authorization" header.
358
359   range
360         my $range = $headers->range;
361         $headers  = $headers->range('bytes=2-8');
362
363       Get or replace current header value, shortcut for the "Range" header.
364
365   referrer
366         my $referrer = $headers->referrer;
367         $headers     = $headers->referrer('http://example.com');
368
369       Get or replace current header value, shortcut for the "Referer" header,
370       there was a typo in RFC 2068 <https://tools.ietf.org/html/rfc2068>
371       which resulted in "Referer" becoming an official header.
372
373   remove
374         $headers = $headers->remove('Foo');
375
376       Remove a header.
377
378   sec_websocket_accept
379         my $accept = $headers->sec_websocket_accept;
380         $headers   = $headers->sec_websocket_accept('s3pPLMBiTxaQ9kYGzzhZRbK+xOo=');
381
382       Get or replace current header value, shortcut for the
383       "Sec-WebSocket-Accept" header from RFC 6455
384       <https://tools.ietf.org/html/rfc6455>.
385
386   sec_websocket_extensions
387         my $extensions = $headers->sec_websocket_extensions;
388         $headers       = $headers->sec_websocket_extensions('foo');
389
390       Get or replace current header value, shortcut for the
391       "Sec-WebSocket-Extensions" header from RFC 6455
392       <https://tools.ietf.org/html/rfc6455>.
393
394   sec_websocket_key
395         my $key  = $headers->sec_websocket_key;
396         $headers = $headers->sec_websocket_key('dGhlIHNhbXBsZSBub25jZQ==');
397
398       Get or replace current header value, shortcut for the
399       "Sec-WebSocket-Key" header from RFC 6455
400       <https://tools.ietf.org/html/rfc6455>.
401
402   sec_websocket_protocol
403         my $proto = $headers->sec_websocket_protocol;
404         $headers  = $headers->sec_websocket_protocol('sample');
405
406       Get or replace current header value, shortcut for the
407       "Sec-WebSocket-Protocol" header from RFC 6455
408       <https://tools.ietf.org/html/rfc6455>.
409
410   sec_websocket_version
411         my $version = $headers->sec_websocket_version;
412         $headers    = $headers->sec_websocket_version(13);
413
414       Get or replace current header value, shortcut for the
415       "Sec-WebSocket-Version" header from RFC 6455
416       <https://tools.ietf.org/html/rfc6455>.
417
418   server
419         my $server = $headers->server;
420         $headers   = $headers->server('Mojo');
421
422       Get or replace current header value, shortcut for the "Server" header.
423
424   server_timing
425         my $timing = $headers->server_timing;
426         $headers   = $headers->server_timing('app;desc=Mojolicious;dur=0.0001');
427
428       Get or replace current header value, shortcut for the "Server-Timing"
429       header from Server Timing <https://www.w3.org/TR/server-timing/>.
430
431   set_cookie
432         my $cookie = $headers->set_cookie;
433         $headers   = $headers->set_cookie('f=b; path=/');
434
435       Get or replace current header value, shortcut for the "Set-Cookie"
436       header from RFC 6265 <https://tools.ietf.org/html/rfc6265>.
437
438   status
439         my $status = $headers->status;
440         $headers   = $headers->status('200 OK');
441
442       Get or replace current header value, shortcut for the "Status" header
443       from RFC 3875 <https://tools.ietf.org/html/rfc3875>.
444
445   strict_transport_security
446         my $policy = $headers->strict_transport_security;
447         $headers   = $headers->strict_transport_security('max-age=31536000');
448
449       Get or replace current header value, shortcut for the
450       "Strict-Transport-Security" header from RFC 6797
451       <https://tools.ietf.org/html/rfc6797>.
452
453   te
454         my $te   = $headers->te;
455         $headers = $headers->te('chunked');
456
457       Get or replace current header value, shortcut for the "TE" header.
458
459   to_hash
460         my $single = $headers->to_hash;
461         my $multi  = $headers->to_hash(1);
462
463       Turn headers into hash reference, array references to represent
464       multiple headers with the same name are disabled by default.
465
466         say $headers->to_hash->{DNT};
467
468   to_string
469         my $str = $headers->to_string;
470
471       Turn headers into a string, suitable for HTTP messages.
472
473   trailer
474         my $trailer = $headers->trailer;
475         $headers    = $headers->trailer('X-Foo');
476
477       Get or replace current header value, shortcut for the "Trailer" header.
478
479   transfer_encoding
480         my $encoding = $headers->transfer_encoding;
481         $headers     = $headers->transfer_encoding('chunked');
482
483       Get or replace current header value, shortcut for the
484       "Transfer-Encoding" header.
485
486   upgrade
487         my $upgrade = $headers->upgrade;
488         $headers    = $headers->upgrade('websocket');
489
490       Get or replace current header value, shortcut for the "Upgrade" header.
491
492   user_agent
493         my $agent = $headers->user_agent;
494         $headers  = $headers->user_agent('Mojo/1.0');
495
496       Get or replace current header value, shortcut for the "User-Agent"
497       header.
498
499   vary
500         my $vary = $headers->vary;
501         $headers = $headers->vary('*');
502
503       Get or replace current header value, shortcut for the "Vary" header.
504
505   www_authenticate
506         my $authenticate = $headers->www_authenticate;
507         $headers         = $headers->www_authenticate('Basic realm="realm"');
508
509       Get or replace current header value, shortcut for the
510       "WWW-Authenticate" header.
511

SEE ALSO

513       Mojolicious, Mojolicious::Guides, <https://mojolicious.org>.
514
515
516
517perl v5.34.0                      2021-07-22                  Mojo::Headers(3)
Impressum