Обходной путь для 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