2009-08-17 8 views
6

मेरे पास नेविगेशन टूल, इंडेक्सिंग, टीओसी इत्यादि उत्पन्न करने के लिए जावास्क्रिप्ट का उपयोग करके HTML फ़ाइलों का एक सेट है। इन फ़ाइलों को केवल स्थानीय रूप से खोला जाना है (उदा।, फ़ाइल: //) और वेब सर्वर पर नहीं परोसा जाता है।स्थानीय फाइलें खोलते समय document.domain सीमाओं को कैसे बाईपास करें?

Error: Permission denied for <file://> to get property Location.href from <file://>. 

मैं समझता हूँ कि इस एफएफ 3.x के भीतर सुरक्षा उपायों का पता लगाया जो की वजह से है: फ़ायरफ़ॉक्स 3.x बाद से, हम जब एक नव बटन कि टीओसी के लिए एक नया फ्रेम उत्पन्न होगा पर क्लिक निम्न त्रुटि प्राप्त 2.x में नहीं, उसमें दस्तावेज़.डोमेन मेल नहीं खाता है, इसलिए यह मान रहा है कि यह क्रॉस-साइट स्क्रिप्टिंग है और पहुंच को अस्वीकार कर रहा है।

क्या इस मुद्दे को हल करने का कोई तरीका है? शायद फ़ायरफ़ॉक्स के भीतर बंद/चालू करने के लिए सिर्फ एक स्विच? इसके आसपास पाने के लिए जावास्क्रिप्ट कोड का थोड़ा सा?

उत्तर

1

Firefox में:

  1. पता बार में, के बारे में लिखें: config,
  2. तो खोज बार में लिखते network.automatic-ntlm-auth.trusted-यूआरआई
  3. अल्पविराम विभाजित सूची दर्ज सर्वर (यानी, इंट्रानेट, घर, कंपनी)

का एक अन्य तरीका users.js संपादित कर रहा है।

users.js में, लिखें:

user_pref("capability.policy.policynames", "localfilelinks"); 
user_pref("capability.policy.localfilelinks.sites", "http://site1.com http://site2.com"); 
user_pref("capability.policy.localfilelinks.checkloaduri.enabled", "allAccess"); 

लेकिन अगर आप सब सत्यापन बंद करना चाहते हैं, बस users.js फ़ाइल में निम्न पंक्ति लिखें:

user_pref("capability.policy.default.checkloaduri.enabled", "allAccess"); 
+0

ऐसा लगता है कि आप सर्वर पर सेवा की गई फ़ाइलों के लिए क्या करेंगे, लेकिन उनमें से कौन से मैं फ़ाइल के माध्यम से उपयोग कर रहा हूं: // जहां कोई डोमेन नहीं है? – Gudlyf

+0

यह समाधान उन मामलों के लिए है जहां आपके पास एक वेबसाइट है (कहीं होस्ट की गई है) और इसे क्लाइंट की हार्ड ड्राइव में कुछ फ़ाइलों को पढ़ने की आवश्यकता है। एक और समाधान इस नीति को बंद कर देता है (मैंने अपना जवाब संपादित करने के तरीके के साथ संपादित किया है) - मैं आपको समझने वाला होल्पे :) – Cleiton

+0

यह फ़ायरफ़ॉक्स 11 के तहत मेरे लिए काम नहीं कर रहा है। मैंने सही प्रोफ़ाइल निर्देशिका में user.js का उपयोग किया है और मैंने सीधे इसे कॉन्फ़िगर करने की कोशिश की है: config। यूआरएल "http: // localhost" है। – Michael

0

Cleiton की विधि के लिए काम करेंगे स्वयं, या आपके द्वारा अपेक्षित किसी भी उपयोगकर्ता के लिए इस मैन्युअल प्रक्रिया के माध्यम से जाना होगा (जब तक यह आपके और आपके सहकर्मियों या किसी चीज़ के लिए एक उपकरण न हो)।

मुझे उम्मीद है कि इस प्रकार की चीज संभव नहीं है, क्योंकि यदि ऐसा है, तो इसका मतलब है कि वहां कोई भी साइट मेरी मशीन पर दस्तावेज़ खोलना शुरू कर सकती है और अपनी सामग्री पढ़ सकती है।

0

आपके पास अनुरोध करने वाले पृष्ठ के सापेक्ष उपफोल्डर में उन सभी फ़ाइलों को एक्सेस करना है जिन्हें आप एक्सेस करना चाहते हैं।

आप कहीं से भी फ़ाइलों को लोड करने के लिए JSONP का उपयोग कर सकते हैं।

+0

क्या JSONP फ़ाइल प्रोटोकॉल के लिए काम कर सकता है?यह एक उदारवादी नहीं है; मैं वास्तव में उत्सुक हूँ। – Matchu

+0

यदि आपका डेटा फ़ाइल पर है: //mydata.jsonp और ऐसा लगता है कि कॉलबैक = {डेटा: "हैलो"} आप उस डेटा का अनुरोध करने के लिए JSONP का उपयोग कर सकते हैं। –

-1

जोड़ें "फ़ाइल: //" network.automatic-ntlm-auth.trusted-यूआरआई के बारे में: config

1

आप फ़ाइल को पढ़ने के लिए फ़ायरफ़ॉक्स में इसका उपयोग कर सकते।

function readFile(arq) { 
     netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
     var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); 
     file.initWithPath(arq); 

     // open an input stream from file 
     var istream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream); 
     istream.init(file, 0x01, 0444, 0); 
     istream.QueryInterface(Components.interfaces.nsILineInputStream); 
     var line = {}, lines = [], hasmore; 
     do { 
      hasmore = istream.readLine(line); 
      lines.push(line.value); 
     } while(hasmore); 
     istream.close(); 
     return lines; 
    } 
संबंधित मुद्दे