Parsing http headers

Today i updated my HTTP proxy a little. RFC 2616 describes Message Headers as following:

message-header = field-name ":" [ field-value ]
field-name     = token
field-value    = *( field-content | LWS )
field-content  = <the OCTETs making up the field-value and consisting of
                 either *TEXT or combinations of token, separators,
                 and quoted-string>

Here is the code i used to get the field-name and field-value. Do you see the bug?

my ($name, $value) = split /:/, $in;

Location headers look like “header: http://www.example.com”. Now, the problem is that split returns a list with “location”, “http” and “www.example.com”. Here is the solution:

my $in = "location: http://www.example.com";
my ($name, $value) = split /:/, $in, 2;

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>