Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

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 80" returns the message "Connecting To". 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="" 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.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1046127]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (6)
As of 2017-02-25 22:21 GMT
Find Nodes?
    Voting Booth?
    Before electricity was invented, what was the Electric Eel called?

    Results (369 votes). Check out past polls.