Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to describe interaction between web server and web client?

At the moment I have the following understanding (which, I assume, is incomplete and probably even wrong).

A web server receives request from a client. The requests are coming to a particular "path" ("address", "URL") and have a particular type (GET, POST and probably something else?). The GET and POST requests can also come with variables and their values (which can be though as a "dictionary" or "associate array"). The parameters of GET requests are set in the address line (for example: http://example.com?x=1&y=2) while parameters of POST requests are set by the client (user) via web forms (in other words, a user fills in a form and press "Submit" button).

In addition to that we have what is called SESSION (also known as COOKIES). This works the following way. When a web-server gets a request (of GET or POST type) it (web server) checks the values of the sent parameters and based on that it generates and sends back to the client HTML code that is displayed in a browser (and is seen by the user). In addition to that the web servers sends some parameters (which again can be imagined as "dictionary" or "associative arrays"). These parameters are saved by the browser somewhere on the client side and when a client sends a new request, he/she also sends back the session parameters received earlier from the web server. In fact server says: you get this from me, memorize it and next time when you speak to me, give it back (so, I can recognize you).

So, what I do not know is if client can see what exactly is in the session (what parameters are there and what values they have) and if client is able to modify the values of these parameters (or add or remove parameters). But what user can do, he/she might decide not to accept any cookies (or session).

There is also something called "local storage" (it is available in HTML5). It works as follows. Like SESSION it is some information sent by web-server to the client and is also memorized (saved) by the client (if client wants to). In contrast to the session it is not sent back b the client to the server. Instead, JavaScripts running on the client side (and send by web-servers as part of the HTML code) can access information from the local storage.

What I am still missing, is how AJAX is working. It is like by clicking something in the browser users sends (via Browser) a request to the web-server and waits for a response. Then the browser receives some response and use it to modify (but not to replace) the page observed by the user. What I am missing is how the browser knows how to use the response from the web-server. Is it written in the HTML code (something like: if this is clicked, send this request to the web server, and use its answer (provided content) to modify this part of the page).

like image 609
Roman Avatar asked Oct 15 '15 15:10

Roman


People also ask

What is the basic relationship between a web client and server?

Suppose, you type amazon.in, you (the browser which is the web client) is requesting the web server and often requesting a bunch of documents from that server. Maybe it is an HTML, CSS, images, video, JSON. You make a request and the server responds, that is the basic relationship.

What is a web web client?

Web clients are the programs used to surf the Web. A client program (a Web browser) reads Web pages supplied by the Web server. Most browsers handle multiple functions, from reading HTML documents to offering FTP services, and even serving as an e-mail or newsgroup reader. (You'll learn all about these functions later in the tutorial.)

What is a web interaction?

It is - especially when debugging web applications - very useful to have a reasonable good understanding of the sequence of events that takes place from the time that a web browser submits a request to get a new web page, to the time it receives it. We can think of this as a Web Interaction.

How do web servers work?

How Web Servers Work. In general, all of the machines on the Internet can be categorized as two types: servers and clients. Those machines that provide services (like Web servers or FTP servers) to other machines are servers. And the machines that are used to connect to those services are clients.


1 Answers

I am going to answer to your questions on AJAX and LocalStorage, also on a very high level, since your definition strike me as such on a high level.

AJAX stands for Asynchronous JavaScript and XML. Your browser uses an object called XMLHTTPRequest in order to establish an HTTP request with a remote resource.

The client, being a client, is oblivious of what the remote server entails on. All it has to do is provide the request with a URL, a method and optionally the request's payload. The payload is most commonly a parameter or a group of parameters that are received by the remote server.

The request object has several methods and properties, and it also has its ways of handling the response.

What I am missing is how the browser knows how to use the response from the web-server.

You simply tell it what to do with the reponse. As mentioned above, the request object can also be told what to do with a response. It will listen to a response, and when such arrives, you tell the client what to do with it.

Is it (the response) written in the HTML code?

No. The response is written in whatever the server served it. Most commonly, it's Unicode. A common way to serve a response is a JSON (JavaScript Object Notation) object.

Whatever happens afterwards is a pure matter of implementation.

LocalStorage

There is also something called "local storage" (it is available in HTML5). It works as follows. Like SESSION it is some information sent by web-server to the client and is also memorized (saved) by the client (if client wants to)

Not entirely accurate. Local Storage is indeed a new feature, introduced with HTML5. It is a new way of storing data in the client, and is unique to an origin. By origin, we refer to a unique protocol and a domain.

The life time of a Local Storage object on a client (again, per unique origin), is entirely up to the user. That said, of course a client application can manipulate the data and decide what's inside a local storage object. You are right about the fact that it is stored and can be used in the client through JavaScript.

Example: some web tracking tools want to have some sort of a back up plan, in case the server that collects user data is unreachable for some reason. The web tracker, sometimes introduced as a JavaScript plugin, can write any event to the local storage first, and release it only when the remote server confirmed that it received the event successfully, even if the user closed the browser.

like image 191
Yuval Herziger Avatar answered Sep 29 '22 20:09

Yuval Herziger