Home     |     .Net Programming    |     cSharp Home    |     Sql Server Home    |     Javascript / Client Side Development     |     Ajax Programming

Ruby on Rails Development     |     Perl Programming     |     C Programming Language     |     C++ Programming     |     IT Jobs

Python Programming Language     |     Laptop Suggestions?    |     TCL Scripting     |     Fortran Programming     |     Scheme Programming Language


 
 
Cervo Technologies
The Right Source to Outsource

MS Dynamics CRM 3.0

Ruby Programming Language

Net::HTTP Cookies / Headers (almost there...)


I'm attempting to login and follow redirects, however, the below script
doesn't seem to do it. I arrive back at the main login page. Am I doing
something obviously wrong? Am I passing bad headers or wrong cookies?
See comments below.

Also, please don't tell me to use Mechanize. I'm trying to improve the
documentation of this library.

Code ------------------
        domain = 'login.domain.com'
        script = '/login.cfm'
        params = 'emai@mail.com&password=passw4rd'
        Net::HTTP.start(domain,80){|http|
                loginRsp = http.post2(script,params)
                loginRsp.each {|key, val| puts key + ' = ' + val}
        puts "FIRST RESPONSE===========\r"
                puts loginRsp['location'] #Seems ok => Login2.domain.com
                request = Net::HTTP::Get.new(loginRsp['location'])
                headers = {'Cookie' => loginRsp.response['set-cookie']}
                firstRsp = http.request(request,headers)
        puts "SECOND RESPONSE===========\r"
                puts firstRsp['location']  #Might be ok. =>
Login.domain.com
                request = Net::HTTP::Get.new(firstRsp['location'])
                headers = {'Cookie' => firstRsp.response['set-cookie']}
                secondRsp = http.request(request,headers)
        puts "THIRD RESPONSE===========\r"
                puts secondRsp['location']  #Not right. Should be
home.domain.com but it is simply domain.com.
                request = Net::HTTP::Get.new(secondRsp['location'])
                headers = {'Cookie' => secondRsp.response['set-cookie']}
                thirdRsp = http.request(request,headers)
                puts "=======================END\r"
        }

--
Posted via http://www.ruby-forum.com/.

On Thu, Jun 07, 2007 at 12:42:45PM +0900, Sy Ys wrote:
> I'm attempting to login and follow redirects, however, the below script
> doesn't seem to do it. I arrive back at the main login page. Am I doing
> something obviously wrong? Am I passing bad headers or wrong cookies?
> See comments below.

> Also, please don't tell me to use Mechanize. I'm trying to improve the
> documentation of this library.

Which library?

There are a couple things wrong.  First, you are not parsing the cookie
header.  You are not supposed to send back the same data you received.
See RFC 2109, and 2965.

Second, you keep reassigning your headers hash.  This means that even if
you were sending back a properly formatted cookie header, you would only
be sending back the last cookie you received!  The server could be
trying to set multiple cookies on your client, and expects that all of
those cookies be sent back.

Hope the helps!

--
Aaron Patterson
http://tenderlovemaking.com/

Add to del.icio.us | Digg this | Stumble it | Powered by Megasolutions Inc