web-dev-qa-db-fra.com

Comment créer mon propre protocole d'URL? (exemple: // ...)

J'ai vu:

  • http://www...
  • ftp://blah.blah...
  • file://blah.blah...
  • unreal://blah.blah...
  • mailto://blah.blah...

Quelle est cette première section où vous voyez http et ainsi de suite appelé?

Puis-je enregistrer le mien?

199
Michael Beck

La portion avec le HTTP://, FTP://, etc sont appelés schémas d'URI

Vous pouvez enregistrer le vôtre via le registre.

HKEY_CLASSES_ROOT/
  your-protocol-name/
    (Default)    "URL:your-protocol-name Protocol"
    URL Protocol ""
    Shell/
      open/
        command/
          (Default) PathToExecutable

Sources: https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml , http://msdn.Microsoft.com/en-us/library /aa767914(v=vs.85).aspx

191
James Gregory

Ouvrez le bloc-notes et collez-y le code ci-dessous. Changez "YourApp" dans le nom de votre application. Enregistrez-le dans YourApp.reg et exécutez-le en cliquant dessus dans l'explorateur. C'est ça! À votre santé! Erwin Haantjes

REGEDIT4

[HKEY_CLASSES_ROOT\YourApp]
@="URL:YourApp Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\YourApp\DefaultIcon]
@="\"C:\\Program Files\\YourApp\\YourApp.exe\""

[HKEY_CLASSES_ROOT\YourApp\Shell]

[HKEY_CLASSES_ROOT\YourApp\Shell\open]

[HKEY_CLASSES_ROOT\YourApp\Shell\open\command]
@="\"C:\\Program Files\\YourApp\\YourApp.exe\" \"%1\" \"%2\" \"%3\" \"%4\" \"%5\" \"%6\" \"%7\" \"%8\" \"%9\""
55
Codebeat

Ceci est différent pour chaque navigateur, dans IE et Windows, vous devez créer ce qu’ils appellent un gestionnaire de protocole enfichable.

Les étapes de base sont les suivantes:

  1. Implémentez l'interface IInternetProtocol.
  2. Implémentez l'interface IInternetProtocolRoot.
  3. Implémentez l'interface IClassFactory.
  4. Optionnel. Implémentez l'interface IInternetProtocolInfo. La prise en charge du protocole HTTP est fournie par le gestionnaire de transactions.
  5. Si IInternetProtocolInfo est implémenté, fournissez la prise en charge de PARSE_SECURITY_URL et PARSE_SECURITY_DOMAIN afin que le gestionnaire de zone de sécurité d'URL puisse gérer correctement la sécurité. Ecrivez le code de votre gestionnaire de protocole.
  6. Fournir un support pour BINDF_NO_UI et BINDF_SILENTOPERATION.
  7. Ajoutez une sous-clé pour votre gestionnaire de protocole dans le registre sous HKEY_CLASSES_ROOT\PROTOCOLS\Handler.
  8. Créez une valeur de chaîne, CLSID, sous la sous-clé et définissez la chaîne sur le CLSID de votre gestionnaire de protocole.

Voir À propos des protocoles enfichables asynchrones sur MSDN pour plus de détails sur les fenêtres. Il existe également un exemple dans le SDK Windows.

Un rapide Google a également montré cet article sur codeproject: http://www.codeproject.com/KB/IP/DataProtocol.aspx .

Enfin, en tant que responsable de la sécurité, je dois souligner que ce code doit être renforcé. Cela présente un risque élevé, car pour le faire de manière fiable, vous ne pouvez pas le faire en code managé et vous devez le faire en C++ (je suppose que vous pourriez utiliser VB6). Vous devez vous demander si vous avez vraiment besoin de le faire et si vous le faites, concevez-le soigneusement et codez-le en toute sécurité. Un attaquant peut facilement contrôler le contenu qui vous est transmis en incluant simplement un lien sur une page. Par exemple, si vous avez un simple dépassement de tampon, personne ne devrait le faire: <a href="custom:foooo{insert long string for buffer overflow here}"> Click me for free porn</a>

Envisagez sérieusement d’utiliser strsafe et les nouvelles méthodes CRT sécurisées incluses dans les compilateurs VC8 et supérieurs. Voir http://blogs.msdn.com/michael_howard/archive/2006/02/27/540123.aspx si vous ne savez pas de quoi je parle.

38
Peter Oehlert

Voici une liste des schémas URI enregistrés . Chacun a un RFC - un document le définissant, qui est presque un standard. Le RFC indique aux développeurs de nouvelles applications (tels que les navigateurs, les clients ftp, etc.) ce qu’ils doivent prendre en charge. Si vous avez besoin d'un nouveau protocole de base, vous pouvez utiliser un protocole non enregistré. Les autres réponses vous disent comment. Gardez à l'esprit que vous pouvez faire beaucoup de choses avec les protocoles existants, obtenant ainsi leurs implémentations existantes.

18
Yuval F

Pour la plupart des produits Microsoft (Internet Explorer, Office, boîtes de dialogue "Ouvrir un fichier", etc.), vous pouvez enregistrer une application à exécuter lorsqu'un URI avec le préfixe approprié est ouvert. . Ceci fait partie de l'explication plus courante - de la mise en oeuvre de votre propre protocole.

Pour Mozilla, l'explication est ici , Java - ici .

4
Dmitry Khalatov

C'est ce qu'on appelle le protocole. La seule chose qui vous empêche de créer votre propre protocole est de:

  1. Écrivez un navigateur ou un agent utilisateur de certains types comprenant ce protocole, à la fois sous sa forme URL et dans le format de données réel
  2. Ecrivez un serveur qui comprend ce protocole
  3. De préférence, spécifiez le protocole afin que navigateur et serveur puissent continuer à fonctionner ensemble.

Windows rend # 1 vraiment facile, et dans de nombreux cas, c'est tout ce dont vous avez besoin. À savoir:

Enregistrement d'une application sur un protocole URL

2
JSBձոգչ

La première section s'appelle un protocole et oui vous pouvez enregistrer le vôtre. Sous Windows (où je suppose que c'est ce que vous faites, étant donné la balise C # - pardon pour les fans de Mono), c'est fait via le registre .

1
GaryF

Un protocole?

J'ai trouvé cela, il semble être un paramètre local pour un ordinateur ...

http://kb.mozillazine.org/Register_protocol

0
Hugoware