<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Standards applicables - Serveur HTTP Apache Version 2.4</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>

<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
<p class="apache">Serveur HTTP Apache Version 2.4</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.4</a> &gt; <a href="./">Documentations diverses</a></div><div id="page-content"><div id="preamble"><h1>Standards applicables</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/misc/relevant_standards.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/misc/relevant_standards.html" title="Français">&nbsp;fr&nbsp;</a> |
<a href="../ko/misc/relevant_standards.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
</div>

    <p>Cette page documente tous les standards applicables que suit le
    serveur HTTP Apache, accompagnés d'une brève description.</p>

    <p>Pour compléter les informations fournies ci-dessous, vous pouvez
    consulter les ressources suivantes :</p>

    <ul>
      <li>
        <a href="http://purl.org/NET/http-errata">
        http://purl.org/NET/http-errata</a> - Corrections de la
	spécification HTTP/1.1
      </li>
      <li>
      <a href="http://www.rfc-editor.org/errata.php">
        http://www.rfc-editor.org/errata.php</a>   - Corrections des RFCs
      </li>
      <li>
        <a href="http://ftp.ics.uci.edu/pub/ietf/http/#RFC">
        http://ftp.ics.uci.edu/pub/ietf/http/#RFC</a> - Une liste
	précompilée des RFCs en rapport avec HTTP
      </li>
    </ul>

    <div class="warning"><h3>Avertissement</h3>
    <p>Ce document n'est pas encore finalisé.</p>
    </div>

  </div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#http_recommendations">Recommandations HTTP</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#html_recommendations">Recommandations HTML</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#authentication">Authentification</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#language_country_codes">Codes de langues et de
  pays</a></li>
</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="http_recommendations" id="http_recommendations">Recommandations HTTP</a></h2>

    <p>Indépendamment des modules compilés et utilisés, Apache en
    tant que serveur web de base respecte les recommandations IETF
    suivantes :</p>

    <dl>
      <dt><a href="http://www.rfc-editor.org/rfc/rfc1945.txt">RFC 1945</a>
      (Informations)</dt>

      <dd>Le Protocole de Transfert Hypertexte (Hypertext Transfer
      Protocol - HTTP) est un protocole de niveau application avec la
      clarté et la vitesse nécessaires pour les systèmes d'informations
      distribués, collaboratifs et hypermédia. Cette RFC documente le
      protocole HTTP/1.0.</dd>

      <dt><a href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC 2616</a>
      (Série de standards)</dt>

      <dd>Le Protocole de Transfert Hypertexte (Hypertext Transfer
      Protocol - HTTP) est un protocole de niveau application pour les
      systèmes d'informations distribués, collaboratifs et hypermédia.
      Cette RFC documente le protocole HTTP/1.1.</dd>

      <dt><a href="http://www.rfc-editor.org/rfc/rfc2396.txt">RFC 2396</a>
      (Série de standards)</dt>

      <dd>Un Identificateur de Ressource Uniforme (Uniform Resource
      Identifier - URI) est une chaîne de caractères compacte permettant
      d'identifier une ressource physique ou abstraite.</dd>

      <dt><a href="http://www.rfc-editor.org/rfc/rfc4346.txt">RFC 4346</a>
      (Série de standards)</dt>

      <dd>Le protocole TLS permet l'utilisation de communications
      sécurisées sur l'Internet. Il fournit le chiffrement, et a été
      conçu pour se prémunir contre l'interception, la modification et
      la falsification de messages.</dd>
    </dl>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="html_recommendations" id="html_recommendations">Recommandations HTML</a></h2>

    <p>En ce qui concerne le langage HTML, Apache respecte les
    recommandations IETF et W3C suivantes :</p>

    <dl>
      <dt><a href="http://www.rfc-editor.org/rfc/rfc2854.txt">RFC 2854</a>
      (Informations)</dt>

      <dd>Ce document résume l'historique du développement de HTML, et
      définit le type MIME "text/html" en pointant les recommandations
      W3C correspondantes.</dd>

      <dt><a href="http://www.w3.org/TR/html401">Spécification HTML
      4.01</a>
      (<a href="http://www.w3.org/MarkUp/html4-updates/errata">Corrections
      d'erreurs</a>)
      </dt>

      <dd>Cette spécification définit le Langage à Balises HyperTexte
      (HyperText Markup Language - HTML), le langage de publication du
      World Wide Web. Elle définit HTML 4.01, qui est une sous-version
      de HTML 4.</dd>

      <dt><a href="http://www.w3.org/TR/REC-html32">Référence HTML
      3.2</a></dt>

      <dd>Le langage à Balises HyperTexte (HyperText Markup Language -
      HTML) est un langage à balises simple permettant de créer des
      documents hypertextes portables. Les documents HTML sont aussi des
      documents SGML.</dd>

      <dt><a href="http://www.w3.org/TR/xhtml11/">XHTML 1.1 -
      XHTML sous forme de modules</a>
      (<a href="http://www.w3.org/MarkUp/2009/xhtml11-2nd-edition-errata.html">Corrections
      d'erreurs</a>)
      </dt>

      <dd>Cette recommandation définit un nouveau type de document XHTML
      basé sur le cadre de développement des modules et les modules
      définis dans la modularisation de XHTML.</dd>

      <dt><a href="http://www.w3.org/TR/xhtml1">XHTML 1.0, le Langage à
      Balises Hypertexte Extensible (Extensible HyperText Markup
      Language) - Seconde édition</a>
      (<a href="http://www.w3.org/2002/08/REC-xhtml1-20020801-errata/">Corrections
      d'erreurs</a>)
      </dt>

      <dd>Cette spécification définit la seconde édition de XHTML 1.0,
      une reformulation de HTML 4 en tant qu'application XML 1.0, ainsi
      que trois DTDs correspondant à celles définies par HTML 4.</dd>
    </dl>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="authentication" id="authentication">Authentification</a></h2>

    <p>En ce qui concerne les différentes méthodes d'authentification,
    Apache respecte les recommandations IETF suivantes :</p>

    <dl>
      <dt><a href="http://www.rfc-editor.org/rfc/rfc2617.txt">RFC 2617</a>
      (Le track des standards)</dt>

      <dd>"HTTP/1.0", y compris la spécification d'un protocole basique
      d'authentification et de contrôle d'accès.</dd>

    </dl>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="language_country_codes" id="language_country_codes">Codes de langues et de
  pays</a></h2>

    <p>Les liens suivants fournissent des informations à propos des
    codes de langues et de pays aux normes ISO ou autres :</p>

    <dl>
      <dt><a href="http://www.loc.gov/standards/iso639-2/">ISO 639-2</a></dt>

      <dd>ISO 639 fournit deux jeux de codes de langues permettant de
      représenter les noms des langues ; le premier est
      un jeu de codes sur deux lettres (639-1), le second (celui
      présenté dans le lien ci-dessus), est un jeu de codes sur trois
      lettres (639-2).</dd>

      <dt><a href="http://www.iso.org/iso/country_codes">
      ISO 3166-1</a></dt>

      <dd>Ce document présente les noms de pays (les noms raccourcis
      officiels en anglais) dans l'ordre alphabétique, tels qu'ils sont
      présentés dans la norme ISO 3166-1 et les éléments de codes
      correspondants de la norme ISO 3166-1-alpha-2.</dd>

      <dt><a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">BCP 47</a>
      (Les meilleurs pratiques courantes),
      <a href="http://www.rfc-editor.org/rfc/rfc3066.txt">RFC 3066</a></dt>

      <dd>Ce document décrit une balise de langue permettant de
      spécifier la langue utilisé dans un objet contenant des
      informations, la manière d'enregistrer des valeurs à utiliser dans
      cette balise de langage, et une méthode pour comparer les balises
      de langue de ce style.</dd>

      <dt><a href="http://www.rfc-editor.org/rfc/rfc3282.txt">RFC 3282</a>
      (Série de standards)</dt>

      <dd>Ce document définit un en-tête "Content-language:" permettant
      de spécifier le langage d'un élément possédant des en-têtes du
      style RFC 822, comme les portions de corps MIME ou les documents
      Web, et un en-tête "Accept-Language:" permettant de spécifier des
      préférences en matière de langue.</dd>
    </dl>

  </div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/misc/relevant_standards.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/misc/relevant_standards.html" title="Français">&nbsp;fr&nbsp;</a> |
<a href="../ko/misc/relevant_standards.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/misc/relevant_standards.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else { 
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2019 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>