You are on page 1of 43

INF 335

Web Server Technologies

1. Interaction between
Client and Server

Via HTTP = HyperText Transfer Protocol


World Wide Web

Architecture and Operations

Basis of operation Web server provides Web pages for clients i.e.
browsers
Client-Server interaction.

URL (Uniform Resource Locator) identifies documents stored on a


server.
URLs specify a server, and the location of a document on
that server.
E.g.
http://home.aubg.bg/students/page.html

HTTP: Client sends REQUEST message, server replies with a


RESPONSE message
Client/Server Model
PC running
Client: A browser that Explorer
requests, receives, and
displays Web pages.
Server
Server: A Web server sends running
Apache Web
the Web pages to the client server
in response to requests.
Mac running
Navigator

Uses HTTP a message-


passing protocol
TCP/IP Network Protocols

HTTP (HyperText Transfer Protocol) uses the Internet TCP/IP


protocols for transporting its messages across networks.

TCP and IP are standard networking protocols software.

HTTP on browser uses TCP to create a TCP connection with a


server.
TCP connection is used for
transferring all messages and data HTTP
between the browser and server.
TCP
Each request from a client is
handled reliably by the server, and
IP
then the TCP connection is broken.
HTTP (HyperText Transfer Protocol)
- Request/Response protocol for client to request Web
pages, and for server to respond with Web pages.

- Each HTTP transaction is treated independently


Server has no memory of preceding transactions (even
between requests in the same session)
but is performed reliably (using TCP).

Server maintains no information about past client requests


HTTP is a stateless protocol.
This creates problem for
for Web applications!

More later
HTTP in more detail

An HTTP client (i.e. Web browser) sends a request, in the


form a text message, for a Web page to an HTTP server (i.e.
Web server)

The server is waiting (sleeping, idling) for web browsers to send


request messages.

When a request arrives, the server processes the request and


returns the result (e.g. Web page) to the web browser as another
text message.

There can be thousands of


browser requests per second
for popular web servers.
The two main HTTP methods used for browser/server
interaction are

GET method
Used to request a Web page from a specified server
or
Used to submit user data (small amount) to a server.

POST method
Used to submit user data (large amount) to a server.

There are other HTTP methods


What is the difference between GET and POST?

GET and POST are two methods defined in HTTP that work in
different ways, but both are able to send data, e.g. HTML form
submissions, to the server.

Normally, GET is used to request a (HTML) document or other


resource from a server, possibly with small number of parameters
specifying more exactly what is being requested.

GET is what a browser uses for most files, like Web pages.

GET may also be used for some Web form submissions to the
server, if there is not too much data. E.g. a Google search request.
Normally, the HTTP POST method is used to send a block
of data to the server to be processed
- Whatever that may entail, e.g. updating a database.

POST is not as simple as using GET, but is more versatile.

For example, you can send entire files using POST.

Also, data size is not limited like it is with GET.


More specifics about HTTP

HTTP is a message-passing protocol


Based on request and response messages.

HTTP messages are sent across Internet in ASCII text


(i.e. readable, aka plaintext) format!

Request

Response
Request

GET /index.html
HTTP/1.0

HTTP/1.0 200 OK
"Welcome to our
Web site!"

Response
The basic format of an HTTP request/response message
is

An initial statement, which is different for request


and response messages

One or more header statements control information


used by server and browser

A blank line

An optional message body (containing one or more


lines of data)
HTTP Request Message

<HTTP method> <resource> HTTP/<version>


<headers>
<empty line>
<body> Optional
HTTP Request Message

The initial line of an HTTP request message comprises

The HTTP method being used, e.g. GET or POST

The resource on the server being requested, e.g.


Web page, or a server-side script to be executed.
The version of HTTP being used

E.g.

GET /index.html HTTP/1.0

This request, sent by the browser, asks the server to


respond by sending the file index.html back to the
browser.
Note

The resource specified in the HTTP request message


does not have to refer to a Web page (.html).

The resource may refer to a server-side script that is


being invoked by the request message.
As we will see later, scripts have different file
extensions not .html
HTTP Response Message

<HTTP/version> <status code> <status text>


<headers>
<empty line>
<body> Optional

The requested resource, e.g. web page,


if available, is sent as a stream of bytes
in the body of the message
HTTP Response Message

The initial line of an HTTP response message comprises

The version of HTTP being used


The response status code
An English word describing status code

E.g.

HTTP/1.0 200 OK

This response informs the browser that its request is OK.


For a response message, the initial line is followed by at least one
header line which specifies the type of content in the body of the
message, if any.

E.g.
Content-Type: text/html

Most responses return an HTML document, but you can return


whatever kind of data you want.
- You just have to use the right MIME type in the Content-
Type: line, followed by the required blank line, followed by the
raw data of the resource you are sending back.

Note: MIME = Multipurpose Internet Mail Extensions, an Internet


standard that extends the character sets and file types that may be
sent across Internet.
In the case of HTML documents sent by the server, the first data is
the HTML document, i.e. Web page containing HTML, CSS and
content.

For multimedia objects in the Web page, e.g. images, further GETs
have to issued by the browser

In the case of images, audio, or video, the response body is


encoded as binary data representing the multimedia object

For example, for server to respond with a GIF file, use

Content-Type: image/gif

Note: MIME Multipurpose Internet Mail Extensions


HTTP Request

Method File HTTP version Headers

GET / HTTP/1.0
Host: www.abc.com
Accept: image/gif, image/jpeg, */*
Accept-Language: en
User-Agent: "Mozilla/5.0 (Windows NT 10.0; Gecko/20100101
Firefox/54.0"
Connection: Keep-Alive

Blank line End of File


Data None for GET

Different browsers can include a few more headers


HTTP Response

HTTP version Status code Status

HTTP/1.0 200 OK
Date: Mon, 14 August 2017 16:20:42 GMT
Server: Apache/2.2.15 (Scientific Linux)
Connection: keep-alive
Content-Type: text/html Headers
Last-Modified: Wed, 20 Jan 2016 17:39:05 GMT
Content-Length: 2543

<HTML> Some data... blah, blah, blah </HTML> Data


Web
Blank line page
Web Forms
User data for processing by a server-side script is collected on
the browser using an HTML Web form.

The user enters data into a Web form, then clicks a Submit
button on the form.

This causes the submitted data to be transmitted to the server,


using either the GET or POST HTTP methods.

This is the basis of Web applications.


Warning

One problem for HTTP is that it is a stateless protocol.

This means that all variable values in a script will be lost


If the execution moves to another web page.

And this means we need to do something in our code to protect


state, i.e. remember the values of variables.

More later
Using Web Forms for sending data to the server

The HTML markup for a Web form to send data to the


server looks something like this

<html>
<body>
<form action="script" method="GET"|"POST">
... // HTML form elements
</form>
</body>
</html>

The action attribute specifies the script to be invoked on


the server, and the method attribute specifies the HTTP
method to be used.
Name/Value Pairs

It is important to give each form element a name (like an id),


e.g. firstname, lastname, using the name attribute.

Associated with each form element is its value.

This may be the value typed by the user,


e.g. "Ivan" for firstname

Or a hard-wired value using the value attribute for a radio


button.

The server-script accesses the data value by


using the assigned name
Example Form to get first name and last name of user
<form action="script" method="get">
First name:
<input type="text" name="firstname"/>
<br />
Last name:
<input type="text" name="lastname"/>
<br />
<input type="submit" value="Submit"/>
</form>

Submit
The names assigned to the name attributes, e.g.
firstname, lastname, allow user input data to be
associated with these names.

E.g. If the browser user enters the following data into the
two text boxes:
name/value pairs
John
Ivan firstname="Ivan"
Smith
Ivanov lastname="Ivanov"

Each input (i.e. value) is automatically attached to the


corresponding name these are known as name/value
pairs

The names enable a script on the server to


differentiate between the different inputs.
When the Submit button is clicked, the name/value pairs
are sent in an HTTP request message to the server script

E.g. firstname="Ivan"&lastname="Ivanov"
Sent to the server
The default format for the transmission of form input data
from the browser to the server is a concatenation of
names and values, separated by &s

name1="value1"&name2="value2"&name3="value3" ...

E.g.

<form action="script" method= "get">


<input type="text" name="firstname"/>
<input type="text" name="lastname"/>
<input type="submit" value="Submit"/>
</form>
Both PHP and ASP.NET have
mechanisms to access this data in a
server-side script

firstname="Ivan"&lastname="Ivanov"
Using GET method to invoke server-side script

The HTTP GET method appends any data submitted via a


Web form to the initial line of the HTTP request mesage:

GET script?name1="value1"&name2="value2"

Script
Name-Value pairs

In this example, the file script is invoked on the server


and two data inputs (value1 and value2) following the ?
symbol are sent as parameters.

Note that data inputs are separated by the & symbol.


Example Google search query for AUBG

https://www.google.bg/search?q=aubg&ie=utf-8&oe=utf-
8&client=firefox-b&gfe_rd=cr&ei=bNSSWfnBLKjY8Aeb5aTYDw
Note: for the HTTP GET method, all that is sent to the
server is the initial line plus one or more header lines.
Followed by a blank line.

There is no body of data in the HTTP message which is


sent to the server.
Using POST method to invoke server-side script

The HTTP POST method packages the information in


exactly the same way as GET, but instead of sending it as a
text string after a ? in the initial line, it sends the
information in the body section of the request message.

This information is read by the server in the form of


standard input.

The HTML in the Web form to achieve this use of the HTTP
POST method would look something like this

<form action="script" method="post">


...
</form>
In the case of form input, the HTTP POST request message sends
the form input data to the server after the blank line, which comes
after the initial and header lines.

POST script HTTP/1.0


Headers (including Content-Length)
Blank line
name1="value1"&name2="value2"

Both PHP and ASP.NET provide means for accessing the data sent
with GET and POST
This means that a server-side script can access the data
sent by the browser and process it.
GET or POST Which one to use?

GET appends name/value pairs to the initial line of the HTTP


request message, and in this way passes the values collected
from the HTML form to the server script.

POST method embeds the name/value pairs inside the body of the
HTTP request message and the information is sent to the server.

Browsers have limitations when it comes to appending name


value pairs to the initial line, as happens in case of GET.
- The effective limitation is about 2000 characters.
- Moreover, name/value pairs are also cached in the
browser. If the user bookmarks the URL containing name/value
pairs, these may be accessed later by someone accessing the
cache.

Passing the values appended to the url, particularly when


sending sensitive information, is not good idea for security
reasons.
Limitations of characters does not occur with POST, since it
embeds name/value pairs within the body of the HTTP request.

Moreover POST supports advanced functionality such as support


for multi-part binary input while uploading files to server.

POST is preferred by developers in general to send form data to


server.

GET may be used for sending non-sensitive data.


Discussion

1. When an HTTP server receives a GET request message


from an HTTP client, how does the server know when all
the headers have arrived?

2. How about a POST request?


Discussion

3. What is the attribute of the HTML form element that defines the
server-side script that will process the form?

4. What is the difference between the GET and POST method of an


HTML form?

5. The usage of an input element is defined by the value of its


_________ attribute.

a) name b) type c) size d) all of the above


6. How is form data sent to the server if the POST method is used?

7. How is user input sent to a server script if the GET method has
been specified?
Discussion

8. Describe in detail the syntax and semantics of the HTTP


request and response messages, giving an example of each.

Old AUBG IS State Exam question


Extra Reading

http://www.w3schools.com/tags/ref_httpmethods.asp

https://www.cs.tut.fi/~jkorpela/forms/methods.html

http://blog.teamtreehouse.com/the-definitive-guide-to-get-vs-post

http://javarevisited.blogspot.com/2012/03/get-post-method-in-http-and-https.html
Questions?

You might also like