\documentclass[a4paper,10pt]{article}
\usepackage{myXsim}
\usepackage{minted}

\author{Benjamin Bertrand}
\title{Interaction client/serveur - Cours}
\date{janvier 2023}

\pagestyle{empty}

\begin{document}

\maketitle

\section{Protocole HTTP}

\begin{definition}[HTTP]
    \texttt{HTTP} est un protocole qui permet de récupérer des ressources telles que des documents HTML, les feuilles CSS, les images... Il est à la base de tout échange de données sur le Web.

    C'est un protocole de type client-serveur, ce qui signifie que les \textbf{requêtes} sont initiées par le client (qui est généralement un navigateur web) et attendent une \textbf{réponse} du serveur.
\end{definition}

\paragraph{Remarques:} pour obtenir une page web complète, il faut la plupart du temps faire plusieurs \textbf{requêtes} HTTP vers plusieurs serveurs.

\begin{center}
    \includegraphics[scale=0.2]{./fig/fetching_a_page}
\end{center}

\section{Requêtes HTTP}

\begin{propriete}[Requête]
    Une requête est l'un des deux types de message que l'on peut s'échanger dans le protocole HTTP.

    Elle est constituée des éléments suivants
    \begin{multicols}{3}
        \begin{itemize}
            \item Une méthode
            \item un chemin
            \item la version du protocole
            \item d'une entête
            \item d'un corps
        \end{itemize}
    \end{multicols}


\end{propriete}

Le protocole HTTP propose différentes méthodes pour faire des requêtes:

\begin{definition}[requêtes GET]

    Les requêtes GET permettent de demander l'accès à des ressources au serveur.


\end{definition}

\paragraph{Utilisation d'une requête GET}
\begin{itemize}
    \item En tapant \colorbox{highlightbg}{http://monsite.fr/fichier}, le navigateur réalise la requête suivante :
        \begin{center}
            \colorbox{highlightbg}{
                \begin{minipage}{0.5\linewidth}
                    GET /fichier HTTP/2 \\ \\
                    Host: monsite.fr \\
                    User-Agent: Mozilla/5.0 ... \\
                    Accept-Language: fr,fr-FR
                \end{minipage}
            }
        \end{center}

    \item Il est possible de passer des paramètres à une requête GET en les ajoutant après un ? dans l'URL.

        En tapant \colorbox{highlightbg}{http://monsite.fr/fichier?age=12\&nom=bob}, le navigateur réalise la requête suivante :
        \begin{center}
            \colorbox{highlightbg}{
                \begin{minipage}{0.5\linewidth}
                    GET /fichier?age=12\&name=jkl HTTP/2 \\ \\
                    Host: monsite.fr \\
                    User-Agent: Mozilla/5.0 ... \\
                    Accept-Language: fr,fr-FR
                \end{minipage}
            }
        \end{center}

        Comme ces paramètres sont écrits directement dans l'URL, il n'est pas conseillé de l'utiliser pour transmettre des informations confidentielles ou nombreuses.
\end{itemize}

\end{document}
