Подтвердить что ты не робот

Обходной путь для href= "file://///..." в Firefox

На сайте интрасети позвольте мне сказать, что я хочу связать файл с общим ресурсом с помощью UNC, по адресу:

\\servername\foldername\filename.rtf

Кажется, правильный способ сделать это с помощью разметки следующим образом:

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

Это пять косых черт - два для протокола, один для указания корня файловой системы, а затем еще два, чтобы указать начало имени сервера.

Это отлично работает в IE7, но в Firefox 3.6 он будет работать, только если html - из локального файла. Я не могу заставить его работать, когда файл поступает с веб-сервера. Ссылка "мертвая" - щелчок на ней ничего не делает.

Есть ли обходной путь для этого в Firefox? Эти два браузера должны быть все, о чем мне нужно сейчас беспокоиться.

Так как это, очевидно, функция Firefox, а не ошибка, может кто-нибудь объяснить, в чем преимущество заключается в предотвращении такого типа ссылки?

4b9b3361

Ответ 1

Как оказалось, я не знал, что Firefox имеет это ограничение/функцию. Я могу сочувствовать этой функции, так как она мешает пользователю невольно получать доступ к локальной файловой системе. К счастью, есть полезные альтернативы, которые могут обеспечить аналогичный пользовательский интерфейс при использовании протокола HTTP.

Одной из альтернатив доступу к контенту через UNC-пути является публикация вашего контента с использованием протокола WebDAV. Некоторые системы управления контентом, такие как MS SharePoint, используют WebDAV для обеспечения доступа к документам и страницам. Что касается опыта конечного пользователя, он выглядит и чувствует себя так же, как доступ к сетевым файлам с UNC-путём; однако все взаимодействия с файлами выполняются через HTTP.

Это может потребовать скромного изменения в философии доступа к файлу, поэтому я предлагаю вам прочитать о протоколе, конфигурации и разрешении WebDAV, относящемся к вашей конкретной серверной технологии.

Вот несколько ссылок, которые могут быть полезны, если вам интересно узнать больше о настройке и использовании WebDAV на нескольких ведущих серверах HTTP:

Ответ 2

Этот вопрос задавали как минимум два раза раньше, но я не смог найти эти сообщения, прежде чем публиковать свои собственные (извините):

Откройте прямой файл на жестком диске из firefox (файл:///)

Ссылки Firefox на локальные или сетевые страницы не работают

Вот краткое изложение ответов из всех трех сообщений:

  • Использовать WebDAV — это лучшее решение для меня, хотя и гораздо более активное, чем я ожидал.
  • Используйте http:// вместо file:///// — это будет копировать документ, который пользователь не может редактировать и сохранять.
  • Отредактируйте user.js на клиенте, как описано здесь — это работало для меня в Firefox 3.6.15, но без доступа к клиентским машинам это не решение.
  • В Firefox используйте about: config, измените параметр Security.fileuri.strict_origin_policy на false — это не работает для меня в 3.6.15. Другие пользователи в [SO] также сообщили, что они не работают.
  • Используйте расширение locallinks Firefox — это устанавливает для Security.fileuri.strict_origin_policy значение true для вас и не имеет другого эффекта.
  • Прочитайте файл-сервер и отправьте его как ответ — это создает ту же проблему, что и просто настройка веб-сервера для использования http://.

Ответ 3

Браузеры, такие как Firefox, отказываются открывать файл://link, когда сама родительская страница HTML обслуживается с использованием другого протокола, например http://.

Лучше всего настроить ваш веб-сервер для предоставления сетевого сопоставленного файла в качестве веб-ресурса, чтобы к нему можно было получить доступ по http://с того же сервера, а не по файлу://.

Поскольку он неясно, какой веб-сервер вы используете, я не могу подробно рассказать о том, как достичь этого.

Ответ 4

В Firefox для открытия File:\\\\\yourFileServer\docs\doc.txt например, вам нужно включить некоторые параметры в конфигурации 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");