Skip to content

rusign/Httpd

Repository files navigation

Httpd

Implementation of the HTTP/1.1 protocol, as described in RFC 2616, with the exception of proxy support.

	// 405 	-> Si METHOD Connue mais non admise
	// 501	-> Si METHOD Non connue

	// Host -> Sert à determiner un serveur d'hote virtuel (5.2)
		// Voir avec le groupe le 5.2

	// 13.5 	-> Reconstruction a partir du cache

GENERAL-HEADERS Cache-Control 14.9 ✓ Connection 14.10 ✓ Date 14.18 Pragma 14.32 ✗ Trailer 14.40 ✓ Transfer-Encoding 14.41 Upgrade 14.42 Via 14.45 Warning 14.46

ENTITY-HEADERS ✓ Allow 14.7 ✓ Content-Encoding 14.11 ✗ Content-Language 14.12 ✓ Content-Length 14.13 ✓ Content-Location 14.14 ✓ Content-MD5 14.15 ✗ Content-Range 14.16 ✓ Content-Type 14.17 ✓ Expires 14.21 ✓ Last-Modified 14.29

REQUEST-HEADERS ✓ Accept 14.1 ✓ Accept-Charset 14.2 ✓ Accept-Encoding 14.3 ✗ Accept-Language 14.4 ✗ Authorization 14.8 ✗ Expect 14.20 ✓ From 14.22 ✓ Host 14.23 ✓ If-Match 14.24 ✓ If-Modified-Since 14.25 ✓ If-None-Match 14.26 ✓ If-Range 14.27 ✓ If-Unmodified-Since 14.28 ✗ Max-Forwards 14.31 ✗ Proxy-Authorization 14.34 ✗ Range 14.35 ✗ Referring 14.36 ✗ TE 14.39 ✓ User-Agent 14.43

RESPONSE-HEADERS ✗ Accept-Ranges 14.5 ✓ Age 14.6 ✓ ETag 14.19 ✗ Rental 14.30 ✗ Proxy-Authenticate 14.33 ✗ Retry-After 14.37 ✓ Server 14.38 ✗ Vary 14.44 ✗ WWW-Authenticate 14.47

14.1 :: Accept Definit les types de supports acceptables Tools: - WIN -> http://stackoverflow.com/questions/20634666/get-a-mime-type-from-a-extension-in-c - UNIX -> http://stackoverflow.com/questions/423626/get-mime-type-from-filename-in-c NON OBLIGATOIRE
Retours: Erreur: 406

14.2 :: Accept-Charset Definits les charsets Liste des charsets: - http://www.iana.org/assignments/character-sets/character-sets.xhtml Tools: - WIN/UNIX -> https://github.com/AutoIt/text-encoding-detect NON OBLIGATOIRE
Retours: Erreur: 406

14.3 :: Accept-Encoding Gestion de l'encoding (cf. ContentEncoding) NON OBLIGATOIRE
Retours: Erreur: 406

14.4 :: Accept-Language Gestion du langage (3.10) IGNORE

14.5 :: Accept-Ranges Gestion des gammes d'octet (cf 3.12) Desactivation des ranges "none" Sinon "bytes" NON OBLIGATOIRE

14.6 :: Age Age de la reponse (Attention, verification d'overflow) (cf 13.2.3) Attention: Overflow -> retourner 2^31 UTILISABLE QUAND IL Y A DU CACHE

14.7 :: Allow Methodes autorisées SEULEMENT EN CAS DE REPONSE A UN 405

14.8 :: Authorization Permet la connection Format Basic (Username:Password | base64) SEULEMENT LORS D'UNE CONNECTION

14.9 :: Cache-Control Gestion du cache Trop complet (priorité mini) LORS D'UNE GESTION DE CACHE

14.10 :: Connection Permet à l'envoyeur de spécifier des options désirées pour cette connexion particulière ATTENTION, ONLY 'CLOSE' CAN CLOSE CONNECTION ATTENTION, pour les versions < HTTP 1.0, Connection contient les Entêtes à ne pas prendre en compte

14.11 :: Content-Encoding: Gestion des encodages Liste des encodages: gzip compress deflate indenty

14.12 :: Content-Language IGNORE

14.13 :: Content-Length Taille du entity body Faire la size du entity body après tout traitement OBLIGATOIRE

14.14 :: Content-Location Addresse de la ressource sur le serv A REVOIR

14.15 :: Content-MD5 Footprint du entity body Attention, seulement après encodage du contenu et avant encodage de trasfert

14.16 :: Content-Range Donne des informations concernant les chuncks Syntaxe: START-END/TOTAL

    Variables:
        START   = Debut de la range
        END     = Fin de la range
        TOTAL   = Taille du contenu total
    Conditions:
        Si erreur 416:
            START-END = '*'
        Si taille du contenu inconnue
            TOTAL = '*'
    
    Si erreur 416 et si la longueur du contenu est inconnue:
        bytes */*
    Si erreur 416
        bytes */TOTAL
    Si la longueur du contenu est inconnue
        bytes START-END/*
    En tant normal
        bytes START-END/TOTAL

14.17 :: Content-Type Type de contenu Retourne le type de contenu (cf 14.1) OBLIGATOIRE SI IL Y A UN ENITY

14.18 :: Date Date d'origine du message OBLIGATOIRE SAUF: Error 100 / 101 (non obligatoire) Error 500 / 503

14.19 :: ETag A revoir (cf. 14.24, 14.26, 14.44 + 13.3.3)

14.20 :: Expect Filtre de se qu'attends le client SI INCOMPREHENSIBLE, RETOURNER 417

14.21 :: Expires Defini quand la réponse est périmé Quelques points importants Si dans le Cache-Control, il y a la directive "max-age" or "s-max-age", "Expires" est ignoré Si le format est invalide (différent de la RFC 1123), la réponse est dite expirée Pour marquer une réponse "déjà expiré", le serveur renvoi un "Expires" équal à "Date" Pour marquer une réponse "jamais expiré", le serveur renvoi un "Expires" équal à NOW + 1 an

14.22 :: From Contient une adresse mail IGNORE

14.23 :: Host Specifie l'hote et le port Ne doit contenir que l'hote + le port (80 par défaut) Pour le serveur Si la Request-Uri est absolue, Host est ignoré Si la Request-Uri est relative, l'hote est determiné par Host OBLIGATORE Reponse 400

14.24 :: If-Match Condition correspondance d'une entité On doit utiliser la comparaison forte (13.3.3) Si la valeur est '', alors la méthode peut être exécuté sur toutes entité Si la condition est foireuse, ou si la valeur est '' mais qu'aucune entité n'est trouvé, on retourne 412 Une demande destinée à mettre à jour une ressource (par exemple, un PUT) PEUT inclure un champ d’en-tête If-Match pour signaler que la méthode de demande NE DOIT PAS être appliquée si l'entité correspondant à la valeur de If-Match (une seule étiquette d'entité) n’est plus une représentation de cette ressource Plusieurs tags sont possible (CSV)

14.25 :: If-Modified-Since Condition de validation d'une entité Si la variante demandée n’a pas été modifiée depuis le moment spécifié dans ce champ, une entité ne sera pas retournée du serveur (et on retourne 304) Attention, utilisation de HTTP-date

14.26 :: If-None-Match Condition de non correspondance d'une entité Verifie que l'entité en question ne correspond a aucun des tags fourni

14.27 :: If-Range

14.28 :: If-Unmodified-Since Condition de validation d'une entité Si la variante demandée a pas été modifiée depuis le moment spécifié dans ce champ, le serveur ne doit pas executer l'opération demandé (et on retourne 412) Attention, utilisation de HTTP-date

14.29 :: Last-Modified Donne la date de la dernière modification Attention, si Last-Modifier > Date, on retourne Date NON OBLIGATOIRE

14.30 :: Location Utilisé pour rediriger le receveur sur une localisation autre que l’URI de demande Utilisable lors d'un 201 ou d'un 3XX

14.31 :: Max-Forwards Limite le nombre de proxy utilisé par TRACE ou OPTION

14.32 :: Pragma IGNORE

14.33 :: Proxy-Authenticate IGNORE

14.34 :: Proxy-Authorization IGNORE

14.35 :: Range Permet de récuperrer différente partie d'une entité, sans tout prendre NON OBLIGATOIRE, MAIS MIEUX VAUT L'IMPLEMENTER

14.36 :: Referer Permet au client de spécifier l’adresse (URI) de la ressource de laquelle l’URI de demande a été obtenu IGNORE, OU VOIR UTILITE AVEC LE CACHE

14.37 :: Retry-After Indiquer pendant combien de temps on pense que le service va être indisponible pour le client demandeur Peut être utilisé avec 503 ou 3XX Utilisable avec HTTP-date ou delta-second

14.38 :: Server Information concernant le serveur (nom, comment, ...) OBLIGATOIRE

14.39 :: TE Indique quels codages d’extension de transfert il acceptera dans la réponse et si il veut ou non accepter des champs de queue dans un codage de transfert fragmenté Le champ d’en-tête TE ne s’applique qu’à la connexion immédiate La présence du mot clé "trailers" indique que le client est d’accord pour accepter les champs d'en-queue (cf. Trailer) NON OBLIGATOIRE

14.40 :: Trailer Donne les headers qui seront disponible dans la queue du message OBLIGATOIRE LORS D'UNE TRANSFERT-ENCODING A CHUNCKED Attention, les champs "Transfer-Encoding", "Trailer" et "Content-Length" ne doivent pas apparaitre dans le Trailer

14.41 :: Transfer-Encoding Encodage de transfert Si l'encodage n'est pas défini, on retourne 501 Encodage possible chuncked Donnée en série de chunk. cf https://fr.wikipedia.org/wiki/Chunked_transfer_encoding compress LWZ algorithm deflate zlib deflate algrotithm gzip LZ77 algorithm identity Aucune modification OBLIGATOIRE EN CAS D'ENCODAGE DE TRANSFERT

14.42 :: Upgrade Donne la liste des protocoles de communication supporté OBLIGATOIRE LORS D'UN 101

14.43 :: User-Agent User-Agent du client NON OBLIGATOIRE (DEVRAIENT)

14.44 :: Vary

14.45 :: Via Chemin utilisé par les proxy Exemple: 1.0 fred, 1.1 nowhere.com (Apache/1.1) IGNORE

14.46 :: Warning Donne des infos supplémentaires concernant l'état ou la transformation du message TODO: Faire la liste des types de WARNING

14.47 :: WWW-Authenticate Donne les challenges pour l'authentification durant un retour 401 https://fr.wikipedia.org/wiki/Authentification_HTTP

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors