mozilla

Revision 142207 of Gestionnaires de protocoles web

  • Raccourci de la révision : Gestionnaires_de_protocoles_web
  • Titre de la révision : Gestionnaires de protocoles web
  • ID de la révision : 142207
  • Créé :
  • Créateur : BenoitL
  • Version actuelle ? Non
  • Commentaire Nouveauté dans Firefox 3 (à relire)
Étiquettes : 

Contenu de la révision

{{template.Fx_minversion_header(3)}} {{wiki.template('Traduction_à_relire')}}

Introduction

Il est relativement courant de voir des pages web lier des ressources utilisant des protocoles non-http. Prenons par exemple le protocole mailto: :

<a href="mailto:webmaster@example.com">Webmestre</a>

Les auteurs web peuvent utiliser un lien mailto: lorsqu'ils veulent fournir aux utilisateurs une manière pratique d'envoyer un courrier électronique, directement depuis la page web. Lorsque le lien est activé, le navigateur est supposé lancer l'application par défaut du bureau pour le courrier électronique. On pourrait appeler cela un gestionnaire de protocole du bureau.

Les gestionnaires de protocoles web permettent à des applications web de participer également à ce processus. Leur importance va grandissant au fur et à mesure que différents types d'applications migrent vers le web. De fait, un grand nombre d'applications de courrier déjà basées sur le web pourraient traiter un lien mailto.

Enregistrement

La définition d'une application web comme gestionnaire de protocole n'est pas un processus difficile. En gros, l'application web utilise registerProtocolHandler() pour s'enregistrer auprès du navigateur comme gestionnaire potentiel pour u protocole donné. Par exemple :

navigator.registerProtocolHandler("mailto",
                                  "https://www.example.com/?to=%s",
                                  "Example Mail");

Où les paramètres sont :

  • Le protocole.
  • Le modèle d'URL, utilisé comme gestionnaire. Le « %s » sera remplacé par le href du lien et une requête GET sera exécutée sur l'URL résultante.
  • Le nom du gestionnaire de protocole tel que présenté à l'utilisateur.

Lorsqu'un navigateur exécutera ce code, il devra demander à l'utilisateur la permission d'autoriser l'application web à s'enregistrer comme gestionnaire du protocole. Firefox affichera une question dans une barre de notification :

Image:wph-notification.png

{{wiki.template('Note', mediawiki.args(['Le modèle d\'URL fourni lors de l\'enregistrement <b>doit</b> être sur le même domaine que la page web essayant de s\'enregistrer ou l\'enregistrement ne se fera pas. Par exemple, <code><span class=\"plain\">' .. http://example.com/homepage.html .. '</span></code> peut enregistrer un gestionnaire de protocole pour <code><span class=\"plain\">' .. http://example.com/handle_mailto/%s .. '</span></code>, mais pas pour <code><span class=\"plain\">' .. http://foobar.com/handle_mailto/%s .. '</span></code>.']))}}

Exemple

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="fr">
<head>
  <title>Web Protocol Handler Sample - Register</title>
  <script type="text/javascript">
    navigator.registerProtocolHandler("fake", "http://starkravingfinkle.org/projects/wph/handler.php?value=%s", "Protocole fake");
  </script>
</head>
<body>
  <h1>Exemple de gestionnaire de protocole web</h1>
  <p>Cette page va installer un gestionnaire de protocole web pour le protocole <code>fake:</code>.</p>
</body>
</html>

Activation

À présent, chaque fois que l'utilisateur activera un lien utilisant le protocole enregistré, le navigateur dirigera l'action vers l'URL spécifiée lors de l'enregistrement de l'application web. Firefox, par défaut, demandera à l'utilisateur avant d'effectuer cette action.

Image:wph-launch.png

Exemple

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="fr">
<head>
  <title>Exemple de gestionnaire de protocole web — test</title>
</head>
<body>
  <p>Hola, avez-vous déjà vu <a href="fake:ceci%20est%20un%20faux%20protocole">ceci</a> auparavant ?</p>
</body>
</html>

Traitement

La phase suivante est le traitement de l'action. Le navigateur extrait le href du lien activé, le combine avec le modèle d'URL fourni lors de l'enregistrement et effectue une requête HTTP GET sur l'URL. Ainsi, avec les exemples précédents, le navigateur effectuerait une requête GET sur cette URL :

http://starkravingfinkle.org/projects/wph/handler.php?value=fake:ceci%20est%20un%20faux%20protocole

Un code côté serveur peut extraire les paramètres de la chaîne de requête et effectuer l'action désirée.

Exemple

<?php
$value = "";
if ( isset ( $_GET["value"] ) ) {
  $value = $_GET["value"];
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="fr">
<head>
    <title>Exemple de gestionnaire de protocole web</title>
</head>
<body>
  <h1>Exemple de gestionnaire de protocole web — Gestionnaire</h1>
  <p>Cette page est appelée lors de la gestion d'une action utilisant le protocole <code>fake:</code>. Voici les données reçues :</p>
  <textarea>
<?php echo(urldecode($value)) ?>
  </textarea>
</body>
</html>
{{ wiki.languages( { "en": "en/Web-based_protocol_handlers" } ) }}

Source de la révision

<p>
{{template.Fx_minversion_header(3)}}
{{wiki.template('Traduction_à_relire')}}
</p>
<h3 name="Introduction"> Introduction </h3>
<p>Il est relativement courant de voir des pages web lier des ressources utilisant des protocoles non-<code>http</code>. Prenons par exemple le protocole <code>mailto:</code> :
</p>
<pre>&lt;a href="mailto:webmaster@example.com"&gt;Webmestre&lt;/a&gt;
</pre>
<p>Les auteurs web peuvent utiliser un lien <code>mailto:</code> lorsqu'ils veulent fournir aux utilisateurs une manière pratique d'envoyer un courrier électronique, directement depuis la page web. Lorsque le lien est activé, le navigateur est supposé lancer l'application par défaut du bureau pour le courrier électronique. On pourrait appeler cela un gestionnaire de protocole <i>du bureau</i>.
</p><p>Les gestionnaires de protocoles web permettent à des applications web de participer également à ce processus. Leur importance va grandissant au fur et à mesure que différents types d'applications migrent vers le web. De fait, un grand nombre d'applications de courrier déjà basées sur le web pourraient traiter un lien <code>mailto</code>.
</p>
<h3 name="Enregistrement"> Enregistrement </h3>
<p>La définition d'une application web comme gestionnaire de protocole n'est pas un processus difficile. En gros, l'application web utilise <code><a href="fr/DOM/window.navigator.registerProtocolHandler">registerProtocolHandler()</a></code> pour s'enregistrer auprès du navigateur comme gestionnaire potentiel pour u protocole donné. Par exemple :
</p>
<pre>navigator.registerProtocolHandler("mailto",
                                  "https://www.example.com/?to=%s",
                                  "Example Mail");
</pre>
<p>Où les paramètres sont :
</p>
<ul><li> Le protocole.
</li><li> Le modèle d'URL, utilisé comme gestionnaire. Le « %s » sera remplacé par le <code>href</code> du lien et une requête GET sera exécutée sur l'URL résultante.
</li><li> Le nom du gestionnaire de protocole tel que présenté à l'utilisateur.
</li></ul>
<p>Lorsqu'un navigateur exécutera ce code, il devra demander à l'utilisateur la permission d'autoriser l'application web à s'enregistrer comme gestionnaire du protocole. Firefox affichera une question dans une barre de notification :
</p><p><img alt="Image:wph-notification.png" src="File:fr/Media_Gallery/Wph-notification.png">
</p><p>{{wiki.template('Note', mediawiki.args(['Le modèle d\'URL fourni lors de l\'enregistrement &lt;b&gt;doit&lt;/b&gt; être sur le même domaine que la page web essayant de s\'enregistrer ou l\'enregistrement ne se fera pas. Par exemple, &lt;code&gt;&lt;span class=\"plain\"&gt;' .. http://example.com/homepage.html .. '&lt;/span&gt;&lt;/code&gt; peut enregistrer un gestionnaire de protocole pour &lt;code&gt;&lt;span class=\"plain\"&gt;' .. http://example.com/handle_mailto/%s .. '&lt;/span&gt;&lt;/code&gt;, mais pas pour &lt;code&gt;&lt;span class=\"plain\"&gt;' .. http://foobar.com/handle_mailto/%s .. '&lt;/span&gt;&lt;/code&gt;.']))}}
</p>
<h4 name="Exemple">Exemple</h4>
<pre>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"&gt;
&lt;html lang="fr"&gt;
&lt;head&gt;
  &lt;title&gt;Web Protocol Handler Sample - Register&lt;/title&gt;
  &lt;script type="text/javascript"&gt;
    navigator.registerProtocolHandler("fake", "http://starkravingfinkle.org/projects/wph/handler.php?value=%s", "Protocole fake");
  &lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;h1&gt;Exemple de gestionnaire de protocole web&lt;/h1&gt;
  &lt;p&gt;Cette page va installer un gestionnaire de protocole web pour le protocole &lt;code&gt;fake:&lt;/code&gt;.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<h3 name="Activation"> Activation </h3>
<p>À présent, chaque fois que l'utilisateur activera un lien utilisant le protocole enregistré, le navigateur dirigera l'action vers l'URL spécifiée lors de l'enregistrement de l'application web. Firefox, par défaut, demandera à l'utilisateur avant d'effectuer cette action.
</p><p><img alt="Image:wph-launch.png" src="File:fr/Media_Gallery/Wph-launch.png">
</p>
<h4 name="Exemple_2"> Exemple </h4>
<pre>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"&gt;
&lt;html lang="fr"&gt;
&lt;head&gt;
  &lt;title&gt;Exemple de gestionnaire de protocole web — test&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;p&gt;Hola, avez-vous déjà vu &lt;a href="fake:ceci%20est%20un%20faux%20protocole"&gt;ceci&lt;/a&gt; auparavant ?&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<h3 name="Traitement"> Traitement </h3>
<p>La phase suivante est le traitement de l'action. Le navigateur extrait le <code>href</code> du lien activé, le combine avec le modèle d'URL fourni lors de l'enregistrement et effectue une requête HTTP GET sur l'URL. Ainsi, avec les exemples précédents, le navigateur effectuerait une requête GET sur cette URL :
</p>
<pre>http://starkravingfinkle.org/projects/wph/handler.php?value=fake:ceci%20est%20un%20faux%20protocole
</pre>
<p>Un code côté serveur peut extraire les paramètres de la chaîne de requête et effectuer l'action désirée.
</p>
<h4 name="Exemple_3"> Exemple </h4>
<pre>&lt;?php
$value = "";
if ( isset ( $_GET["value"] ) ) {
  $value = $_GET["value"];
}
?&gt;

&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"&gt;
&lt;html lang="fr"&gt;
&lt;head&gt;
    &lt;title&gt;Exemple de gestionnaire de protocole web&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;h1&gt;Exemple de gestionnaire de protocole web — Gestionnaire&lt;/h1&gt;
  &lt;p&gt;Cette page est appelée lors de la gestion d'une action utilisant le protocole &lt;code&gt;fake:&lt;/code&gt;. Voici les données reçues :&lt;/p&gt;
  &lt;textarea&gt;
&lt;?php echo(urldecode($value)) ?&gt;
  &lt;/textarea&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<div class="noinclude">
</div>
{{ wiki.languages( { "en": "en/Web-based_protocol_handlers" } ) }}
Revenir à cette révision