Un schéma d’URI, en informatique, est le premier niveau de la structure de nommage des identifiants uniformes de ressources (URI). Toutes les URL sont construites à partir d'un nom de schéma, suivi de deux points (« : ») puis de l'URI, spécifique au schéma. La syntaxe et la sémantique de la partie spécifique sont, en grande partie, laissées aux spécifications des différents schémas.

La plupart des schémas ayant été conçus à l'origine pour être utilisés avec un protocole, ils sont souvent appelés de manière incorrecte des « protocoles » ou des « protocoles d'URI ». Par exemple, le schéma HTTP est en général utilisé pour désigner des ressources Web utilisant le protocole HTTP. Maintenant, des URI de ce schéma sont utilisés pour d'autres applications, comme les ressources RDF (voir RDF Schema) ou les espaces de nom XML, qui n'ont pas de rapport avec le protocole. De plus, certains schémas ne sont associés à aucun protocole particulier (comme le schéma file) et d'autres n'utilisent pas le nom d'un protocole comme préfixe (comme le schéma news pour usenet). Bien que l'usage semble avoir accepté le terme schéma, le mot plan, pour plan d'URI, est une traduction plus adaptée du mot anglais scheme.

Les schémas d'URI sont censés être enregistrés auprès de l'IANA, mais des schémas non enregistrés sont utilisés en pratique. La RFC 4395 décrit la procédure d'enregistrement d'un nouveau schéma d'URI.

Syntaxe générique

Le standard Internet STD 66 (voir aussi la RFC 3986) définit la syntaxe commune utilisée par tous les schémas d'URI. Chaque URI est constitué de quatre parties :

: [ ? ] [ # ]

Le nom du schéma est une lettre suivie de n'importe quelle combinaison de lettres, de chiffres, du signe plus (+), du point (.) ou d'un tiret (-) et se termine par deux points (:).

La partie hiérarchique de l'URI est prévue pour contenir les informations d'identification de la ressource, hiérarchique par nature. En général, cette partie commence par un double (//), suivi par le domaine puis un chemin optionnel.

Le domaine est principalement constitué du nom d'hôte ou de l'adresse IP, cette information peut être encadrée par deux autres champs optionnels : avant, les informations concernant l'utilisateur délimitées par un @ ; après, un numéro de port, précédé par un deux-points (:).

Le chemin est une séquence de segments (similaires à des répertoires), séparés par des (/). Chaque segment peut contenir des paramètres séparés par des points virgules (;), bien que cela soit rarement utilisé.

La requête est une partie optionnelle séparée par un point d'interrogation qui contient des informations complémentaires qui ne sont pas de nature hiérarchique. Le format de la requête n'est pas défini de manière générale, mais est souvent formée d'une suite de paires <clef>=<valeur> séparées par des points virgules ou par des esperluettes.

Le fragment est une partie optionnelle séparée par un dièse. Il fournit des informations supplémentaires permettant d'accéder à une ressource secondaire. Lorsque la ressource est un document HTML, le fragment est souvent l'id d'un élément et le navigateur fera le nécessaire pour que cet élément soit visible.

Exemples

Voici un exemple d'URI ainsi que de ses différents composants :

Schémas enregistrés auprès de l'IANA

Schéma But Défini par Format Notes aaa RFC 3588 aaa://<host>[:<port>][;transport=<transport>][;protocol=<protocol>] exemple : aaa://host.example.com:1813;transport=udp;protocol=radius aaas Équivalent sécurisé de aaa RFC 3588 aaas://<host>[:<port>][;transport=<transport>][;protocol=<protocol>] acap RFC 2244 acap://[<user>[;AUTH=<type>]@]<host>[:<port>]/<entry> Schéma d'URL utilisé dans le protocole ACAP pour l'attribut « subdataset », les références et l'héritage. cap RFC 4324 Schéma utilisé à la fois pour adresser les dépôts de calendriers et les calendriers accessible via CAP. cid Identifie les différentes parties d'un message SMTP/MIME. RFC 2392 cid:<content-id> crid RFC 4078 crid://<host>/<data> Permet de référencer les contenus prévus à la diffusion. Inclusion de petites quantités de données dans l'URI elle-même RFC 2397 data:<mediatype>[;base64],<data> dav (WebDAV) RFC 2518 dav: Utilisé pour les identifiants internes uniquement. dict RFC 2229 dict://<user>;<auth>@<host>:<port>/d:<word>:<database>:<n> dict://<user>;<auth>@<host>:<port>/m:<word>:<database>:<strat>:<n> dns RFC 4501 dns:[//<host>[:<port>]/]<dnsname>[?<dnsquery>] exemples : dns:example?TYPE=A;CLASS=IN dns://192.168.1.1/ftp.example.org?type=A fax Utilisé pour les numéros de fax. RFC 2806 fax:<phonenumber> Rendu obsolète par la RFC 3966. L'utilisation du schéma tel est désormais recommandée pour tout type de numéro. Référence les fichiers sur un système de fichier local ou sur le réseau. RFC 1738 RFC 3986 file://[host]/path ou (RFC 3986) file:[//host]/path ftp Ressources FTP RFC 1738 syntaxe générique Coordonnées géographiques (GPS) RFC 5870 geo:<lat>,<lon>[,<alt>][;u=<uncertainty>] (voir WGS 84) D'autres systèmes de coordonnées, y compris non terrestres (Lune, Mars…) existeront sans être encore référencés. go RFC 3368 go://[<host>]?[<common-name>]*[;<attribute>=[<type>,]<value>] ou go:<common-name>*[;<attribute>=[<type>,]<value>] gopher Utilisé par le protocole Gopher RFC 4266 gopher://<host>:<port>/<item type>/<path> h323 H.323 RFC 3508 h323:[<user>@]<host>[:<port>][;<parameters>] http Ressources HTTP RFC 2616 syntaxe générique https Connexions http sécurisées. RFC 2817 syntaxe générique icap RFC 3507 im RFC 3860 RFC 4622 im:<username>[@<host>] imap Permet d'accéder aux courriers électroniques via IMAP RFC 2192 imap://[<user>[;AUTH=<type>]@]<host>[:<port>]/<command> RFC 4452 ipp RFC 3510 irisiris.beepiris.xpciris.xpcsiris.lws RFC 3981 RFC 3983 RFC 4992 RFC 4992 RFC 4993 ldap Requête LDAP RFC 2255 RFC 4516 ldap://[<host>[:<port>]][/<dn> [?[<attributes>][?[<scope>][?[<filter>][?<extensions>]]]]] exemple : ldap://ldap1.example.net:6666/o=University%20of%20Michigan, c=US??sub?(cn=Babs%20Jensen) lsid LSID dtc/04-10-08 URN:LSID:<Authority>:<Namespace>:<ObjectID>[:<Version>] exemple : urn:lsid:ubio.org:namebank:11815 RFC 2368 mailto:<address>[?<header1>=<value1>[&<header2>=<value2>]] exemple : mailto:[email protected]?subject=A%20Test&body=My%20idea%20is%3A%20%0A mid Référence les messages ou des parties de messages SMTP/MIME. RFC 2392 mid:<message-id>[/<content-id>] (Voir aussi cid:) modem modem RFC 3966 msrpmsrps RFC 4975 mtqp RFC 3887 mupdate RFC 3656 news Usenet RFC 1738 news:<newsgroupname> ou news:<message-id> nfs Ressources RFC 2224 syntaxe générique nntp Usenet NNTP RFC 1738 nntp://<host>:<port>/<newsgroup-name>/<article-number> opaquelocktoken opaquelocktoken RFC 4918 pop Permet d'accéder à une boîte mail via POP3 RFC 2384 pop://[<user>[;AUTH=<auth>]@]<host>[:<port>] pres Utilisé dans CPP pour identifier une présence. RFC 3859 pres:<address>[?<header1>=<value1>[&<header2>=<value2>]] prospero RFC 4157 rtsp RFC 2326 service RFC 2609 shttp HTTP sécurisé RFC 2660 Largement remplacé par HTTPS. sip Utilisé par SIP RFC 3969 RFC 3261 sip:<user>[:<password>]@<host>[:<port>][;<uri-parameters>][?<headers>] exemples : sip:[email protected]?subject=project%20x&priority=urgent sip:+1-212-555-1212 :[email protected];user=phone Version sécurisé de sip RFC 3969 RFC 3261 sips:<user>[:<password>]@<host>[:<port>][;<uri-parameters>][?<headers>] sms Utilisé pour envoyer un SMS à partir d'un appareil compatible RFC 5724 sms:<phonenumber>[,<phonenumber>]?body=<text>*[&<name>=<value>] exemples : sms:+33123456789,+33987654321 sms:+33123456789?body=hello%20vous snmp RFC 4088 snmp://[user@]host[:port][/[<context>[;<contextEngineID>]][/<oid>]] exemples : snmp://example.com//1.3.6.1.2.1.1.3+ snmp://[email protected]:8161/bridge1;800002b804616263 soap.beepsoap.beeps RFC 3288 tag Tag URI RFC 4151 tag:<email/domainname>,<date>:<Item> tel Utilisé pour les numéros de téléphone RFC 3966 RFC 2806 tel:<phonenumber> telnet Utilisé par telnet RFC 4248 telnet://<user>:<password>@<host>[:<port>/] tftp RFC 3617 Résolution de référence relative RFC 2557 tip RFC 2371 tv Diffusion TV RFC 2838 urn Noms uniformes de ressources RFC 2141 urn:<namespace>:<specificpart> vemmi RFC 2122 wais Utilisé par WAIS RFC 4156 wais://<host>:<port>/<database>[?<search>] ou wais://<host>:<port>/<database>/<wtype>/<wpath> xmlrpc.beepxmlrpc.beep RFC 3529 xmpp XMPP RFC 5122 xmpp:<user>@<host>[:<port>]/[<resource>][?<query>] z39.50r Z39.50 RFC 2056 z39.50r://<host>[:<port>]/<database>?<docid>[;esn=<elementset>][;rs=<recordsyntax>] z39.50s Session Z39.50 RFC 2056 z39.50s://<host>[:<port>]/[<database>][?<docid>][;esn=<elementset>][;rs=<recordsyntax>]

Schémas d'URI non officiels couramment utilisés Schéma But Défini par Format Notes Affiche des informations concernant le produit Utilisé par les navigateurs webs, parfois aussi pour fournir des options interactives. Le navigateur Opera utilise opera:. adiumxtra Installation directe de Adium. adiumxtra://www.adiumxtras.com/download/0000 0000 identifie un spécifique. aim Permet de contrôler AOL aim:<function>?<parameters> Les fonctions comprennent goim, addbuddy et buddyicon. apt Méthode expérimentale pour installer des logiciels via APT. apt:<package name> Utilisé sur les sites hébergeant des dépôts logiciels pour Debian. afp Permet d'accéder aux partages via TCP/IP: afp://[<user>@]<host>[:<port>][/[<path>]] via AppleTalk: afp:/at/[<user>@]<host>[:<zone>][/] aw Liens vers un monde aw://<worldserver host>:<worldserver port>/<worldname> Se trouve généralement comme referer lorsqu'un utilisateur ouvre un site depuis un monde . Rejoindre une partie de Bolo bolo://<hostname>/ Généralement transmise par IRC ou par des serveurs de jeux. callto Démarre une communication Skype callto:<screenname> ou callto:<phonenumber> Initialement apparu dans . Fonctionne avec les versions actuelles de Skype avec , et Safari chrome Utilisé par les interfaces construites avec XUL. Mozillachrome://<package>/<section>/<path> (Ou <code><section></code> peut être "content", "skin" ou "locale") Fonctionne seulement dans les navigateurs basés sur Mozilla, tels que , et . coap Accède aux ressources par (CoAP). coap://<host>[:<port>]/<path>[?<query>] Identifie les ressources CoAP et permet de localiser les ressources. Accède à un fournisseur de contenu . content://provider/<path> Effectue une requête sur un fournisseur de contenu . cvs Lien vers un dépôt CVS. cvs://<method:logindetails>@<repository>/<modulepath>;[date=date to retrieve | tag=tag to retrieve] doi , . doi:10.<publisher number>/<suffix>Exemple : doi:10.1000/182 ed2k eDonkey2000 ed2k://|file|<filename>|<size of file>|<hash of file>|/ ou ed2k://|server|<host>|<port>|/ feed:<absolute_uri> ou feed://<hierarchical part> exemples : feed://example.com/rss.xml feed:https://example.com/rss.xml finger://host[:port][/<request>] fish://[<username>[:<password>]@]<hostname>[:<port>] gg Gadu-Gadu gg:<userid> gizmoproject gizmoproject://call?id=<gizmo_id> gtalk gtalk:[email protected] iax2 iax2:[<username>@]<host>[:<port>][/<number>[?<context>]] exemples : iax2:[2001:db8::1]:4569/alice?friends iax2:[email protected]/12022561414 irc irc://<host>[:<port>]/[<channel>[?<password>]] ircs ircs://<host>[:<port>]/[<channel>[?<password>]] irc6 irc6://<host>[:<port>]/[<channel>[?<password>]] itms itms: jar Java API jar:<url>!/[<entry>] javascript javascript:<javascript to execute> keyparc Bloombase keyparc://encrypt/<username>/<uri> ou keyparc://decrypt/<username>/<uri> lastfm Last.fm lastfm://<radio_stream> ou lastfm://globaltags/<genre> ou lastfm://user/<username>/<stuff> ldaps ldaps://[<host>[:<port>]][/<dn> [?[<attributes>][?[<scope>][?[<filter>][?<extensions>]]]]] Magnet magnet:?xt=urn:sha1:<hash of file>&dn=<display name> () maps:q=<physical location> mms mms://<host>:<port>/<path> msnim msnim:[email protected]

msnim:[email protected]

msnim:[email protected]