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

zeno has asked for the wisdom of the Perl Monks concerning the following question:

My program needs to enter a web page, get a session number (which is stored in a cookie), and then go to a subsequent page on the same site using that cookie to maintain the session.

I thought this would be simple, using HTTP::Cookies to create a cookie jar. After beating my head against it for a while, I realized that the site was not passing me any set-cookies in the header. But when I visit the page from a browser, and I tell the browser to prompt me if a cookie arrives, the browser tells me the site is sending me cookies.

I even telneted to the site on port 80, and got the same header information with no set-cookies

I distilled the code down to the following. I check two sites, the one which doesn't send me cookies in the header (infojobs) and one which does (msn).

Has anyone seen this before? How are they sending me cookies if they aren't in the header?

# get_header.pl - print out headers of various URLs use strict; use LWP::UserAgent; my @urls; # Create array of URLs to visit push(@urls,"http://www.infojobs.net/empresa_login.cfm"); push(@urls,"http://www.msn.com"); # Create user agent which emulates Internet Explorer my $ua = LWP::UserAgent->new; $ua->agent('Mozilla/4.0 (Compatable; MSIE 5.01; Windows NT 5.0)'); # Cycle through URLs and print out their headers for my $url (@urls) { my $request; my $result; # Create a request object for this URL $request = HTTP::Request->new('GET', $url); $request->header('Accept' => 'text/html'); # Submit the request $result = $ua->request($request); # Print the resulting header print "_" x 80 ."\n"; print "Looking up $url...\n"; print $result->headers_as_string; }