http://qs321.pair.com?node_id=1213617


in reply to Re: How to remove HTTP Keep-Alive 300 header from LWP::UserAgent request
in thread How to remove HTTP Keep-Alive 300 header from LWP::UserAgent request

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.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Keep-Alive

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.

https://tools.ietf.org/html/rfc2068#section-19.7.1.1

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".

  • Comment on Re^2: How to remove HTTP Keep-Alive 300 header from LWP::UserAgent request

Replies are listed 'Best First'.
Re^3: How to remove HTTP Keep-Alive 300 header from LWP::UserAgent request
by jeffenstein (Friar) on Apr 26, 2018 at 15:41 UTC

    The actual code that adds the header is in Net::HTTP::Methods, at line 180 in the current version.

    if ($self->keep_alive) { if ($peer_ver eq "1.0") { # from looking at Netscape's headers push(@h2, "Keep-Alive: 300"); unshift(@connection, "Keep-Alive"); } }

    So, I would guess that Net::HTTP believes your connection is http/1.0, and is therefore sending the http/1.0 header. If it's not, maybe you can make a bug report against the module?

      Thanks for pointing that out to me. I already found a way to change extra options before and I managed to combine the information that you gave me into this solution:

      use LWP::Protocol::http ; push(@LWP::Protocol::http::EXTRA_SOCK_OPTS, PeerHTTPVersion => 1.1) ;

      and addding the Connection header to ns_headers:

      my @ns_headers = ( 'Connection' => 'Keep-Alive', ... }

      So, I would guess that Net::HTTP believes your connection is http/1.0, and is therefore sending the http/1.0 header. If it's not, maybe you can make a bug report against the module?

      Hi,

      For what purpose? What would it solve?

Re^3: How to remove HTTP Keep-Alive 300 header from LWP::UserAgent request
by Anonymous Monk on Apr 27, 2018 at 02:14 UTC

    E.g. from the 5 Internet Browsers I have looked at, none of them sends this header.

    Are any of these browsers from 1995? First came keep-alive, then came the RFC, thats history for you