web-dev-qa-db-fra.com

Solution de contournement pour href = "file: ///// ..." dans Firefox

Sur un site intranet, disons que je veux créer un lien vers un fichier sur un partage en utilisant UNC, à l'adresse:

\\servername\foldername\filename.rtf

Il semble que la bonne façon de procéder consiste à utiliser un balisage comme celui-ci:

<a href="file://///servername/foldername/filename.rtf">filename.rtf</a>

C'est cinq barres obliques - deux pour le protocole, une pour indiquer la racine du système de fichiers, puis deux autres pour indiquer le début du nom du serveur.

Cela fonctionne bien dans IE7, mais dans Firefox 3.6, cela ne fonctionnera que si le code HTML provient d'un fichier local. Je n'arrive pas à le faire fonctionner lorsque le fichier provient d'un serveur Web. Le lien est "mort" - cliquer dessus ne fait rien.

Existe-t-il une solution à cela dans Firefox? Ces deux navigateurs devraient être tout ce dont je dois m'inquiéter pour l'instant.

Comme il s'agit évidemment d'une fonctionnalité de Firefox, pas d'un bug, quelqu'un peut-il expliquer quel est l'avantage d'empêcher ce type de lien?

20
hmqcnoesy

En fait, je n'étais pas au courant que Firefox avait cette limitation/fonctionnalité. Je peux comprendre la fonctionnalité, car elle empêche un utilisateur d'accéder involontairement au système de fichiers local. Heureusement, il existe des alternatives utiles qui peuvent fournir une expérience utilisateur similaire tout en respectant le protocole HTTP.

Une alternative à l'accès au contenu via les chemins UNC consiste à publier votre contenu à l'aide du protocole WebDAV . Certains systèmes de gestion de contenu, tels que MS SharePoint, utilisent WebDAV pour fournir l'accès aux documents et aux pages. En ce qui concerne l'expérience de l'utilisateur final, cela ressemble et ressemble à l'accès aux fichiers réseau avec un chemin UNC; cependant, toutes les interactions de fichiers sont effectuées via HTTP.

Cela peut nécessiter un changement modeste dans votre philosophie d'accès aux fichiers, je vous suggère donc de lire le protocole WebDAV, la configuration et la gestion des autorisations en ce qui concerne votre technologie de serveur spécifique.

Voici quelques liens qui peuvent être utiles si vous souhaitez en savoir plus sur la configuration et l'utilisation de WebDAV sur quelques serveurs HTTP de premier plan:

4
kbrimington

Cette question a été posée au moins deux fois auparavant, mais je n'ai pas pu trouver ces messages avant de poster le mien (désolé):

Ouvrez un fichier direct sur le disque dur à partir de Firefox (fichier: ///)

Les liens Firefox vers des pages locales ou réseau ne fonctionnent pas

Voici un résumé des réponses des trois articles:

  • Utilisez WebDAV - c'est la meilleure solution pour moi, bien que beaucoup plus impliquée que je ne l'avais prévu.
  • Utilisation http:// au lieu de file:///// - cela servira une copie du document que l'utilisateur ne peut pas modifier et enregistrer.
  • Modifiez user.js sur le client comme décrit ici - cela a fonctionné pour moi dans Firefox 3.6.15, mais sans accès aux machines clientes, ce n'est pas une solution.
  • Dans Firefox, utilisez about: config , changez le Security.fileuri.strict_Origin_policy paramètre false - cela ne fonctionne pas pour moi en 3.6.15. D'autres utilisateurs de [SO] ont également signalé que cela ne fonctionnait pas.
  • Utilisez locallinks l'extension Firefox - cela définit le Security.fileuri.strict_Origin_policy à vrai pour vous et semble n'avoir aucun autre effet.
  • Lisez le fichier côté serveur et envoyez-le comme réponse - cela présente le même problème que de simplement configurer votre serveur Web pour utiliser http://.
13
hmqcnoesy

Les navigateurs comme Firefox refusent d'ouvrir le lien file: // lorsque la page HTML parent elle-même est servie en utilisant un protocole différent comme http: //.

Votre meilleur pari est de configurer votre serveur Web pour fournir le fichier mappé réseau en tant que ressource Web afin qu'il soit accessible par http: // à partir du même serveur plutôt que par fichier: //.

Comme il n'est pas clair quel serveur Web vous utilisez, je ne peux pas entrer en détail sur la façon d'y parvenir.

11
BalusC

Dans Firefox pour ouvrir File:\\\\\yourFileServer\docs\doc.txt par exemple, vous devez activer certaines options dans la configuration de Firefox:

user_pref("capability.policy.policynames", "localfilelinks");
user_pref("capability.policy.localfilelinks.sites", "http://yourServer1.companyname.com http://yourServer2.companyname.com");
user_pref("capability.policy.localfilelinks.checkloaduri.enabled", "allAccess");
6
Rukicc

Je ne sais pas si cela fonctionnera, mais essayez-le! Ancien article, mais potentiellement toujours utile.

http://www.techlifeweb.com/firefox/2006/07/how-to-open-file-links-in-firefox-15.html

1
Brian D