Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re^3: Decode perl cgi response in C

by samwyse (Scribe)
on Jul 24, 2013 at 14:20 UTC ( #1046127=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Decode perl cgi response in C
in thread Decode perl cgi response in C

I get the feeling that you want help on the HTTP protocol. If you don't have (or can't use) any libraries to help, a minimal method would be to open a TCP connection and send a request message, which consists of the following:

  • A request line, for example GET /images/logo.png HTTP/1.1, which requests a resource called /images/logo.png from the server.
  • Request Headers, such as Accept-Language: en
  • An empty line.
  • An optional message body.
The request line and headers must all end with <CR><LF> (that is, a carriage return character followed by a line feed character). The empty line must consist of only <CR><LF> and no other whitespace. In the HTTP/1.1 protocol, all headers except Host are optional (but in practice, it's also optional if there's only one name associated with the IP address). A request line containing only the path name is accepted by servers to maintain compatibility with HTTP clients before the HTTP/1.0 specification.

You will then be able to read the response message, which consists of the following:

  • A Status-Line (for example HTTP/1.1 200 OK, which indicates that the client's request succeeded)
  • Zero of more Response Headers, such as Content-Type
  • An empty line
  • An optional message body
The Status-Line and headers must all end with <CR><LF> (a carriage return followed by a line feed). The empty line must consist of only <CR><LF> and no other whitespace.

On my computer, entering the command "telnet www.perlmonks.org 80" returns the message "Connecting To www.perlmonks.org...". If I then enter the command "GET / HTTP/1.1" and hit the <Enter> key twice, I get the following:

HTTP/1.1 200 OK Via: 1.1 ETC-USRPXY-02 Connection: Keep-Alive Proxy-Connection: Keep-Alive Content-Length: 47589 Date: Wed, 24 Jul 2013 14:08:33 GMT Age: 74 Content-Type: text/html ETag: "b9e5-4e24268fd6b00" Server: Apache/2.2.24 Accept-Ranges: bytes Last-Modified: Wed, 24 Jul 2013 14:06:04 GMT <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head>
... followed by roughly 47 KB of other data. You can experiment by using telnet to connect to your server and see what you get back.


Comment on Re^3: Decode perl cgi response in C
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1046127]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (4)
As of 2015-07-04 23:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls