Обходной путь для 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, а не ошибка, может кто-нибудь объяснить, в чем преимущество предотвращения ссылок такого типа?

5 ответов

Решение

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

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

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

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

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

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

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

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

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

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

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

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

В 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");

Добавьте свою собственную политику, откройте конфигурацию " about: config " в адресной строке и добавьте три новых записи:

  • capability.policy.policynames MYPOLICY
  • возможность. политика. MyPolicy. Сайты http://localhost/
  • возможность. политика. MyPolicy.checkloaduri.enabled allAccess

Замените http://localhost/ своим веб-сайтом.
Работает с Firefox 70.0.

Я не знаю, сработает ли это, но попробуйте! Старая статья, но потенциально все еще полезная.

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

Другие вопросы по тегам