Sorry but that does not sound right to me. In think that the implementation is incorrect. There is no standard that says the Keep-Alive: 300 header is mandatory. E.g. from the 5 Internet Browsers I have looked at, none of them sends this header.
quote: The Keep-Alive general header allows the sender to hint about how the connection and may be used to set a timeout and a maximum amount of requests.
quote: When the Keep-Alive connection-token has been transmitted with a request or a response, a Keep-Alive header field MAY also be included
Another thing is that to me this header looks parameterized in form in both request and response (according to each of the specifications mentioned, including the one you have provided). Thus not of the form 'Header : value'
Regards the keep_alive argument I think you are mixing it up. The keep_alive argument is in the 'new' of the LWP::UserAgent and is not related to the "Keep-Alive: 300" header. Quote from LWP::UserAgent: "The keep_alive value is passed on as the total_capacity for the connection cache".