के साथ वेब वर्कर में 'नया फ़ंक्शन' सक्षम करें मुझे वेब वर्कर में काम करने के लिए new Function
प्राप्त करने में समस्या हो रही है। मेरे पास एक HTML पृष्ठ है जो वेब वर्कर को जन्म देता है। यह वेब वर्कर new Function(str)
के माध्यम से कोड निष्पादित करता है। मैं इसे एक पैक किए गए क्रोम ऐप में उपयोग करने की कोशिश कर रहा हूं, जिसके लिए eval
का उपयोग करके एक पृष्ठ की आवश्यकता होती है-जैसे कोड को स्पष्ट रूप से मैनिफेस्ट में एक सैंडबॉक्स पृष्ठ के रूप में सूचीबद्ध किया जाना चाहिए।सीएसपी
- सूची करते पेज सैंडबॉक्स जाना है:
अब, वहाँ दो विकल्प हैं। यदि मैं ऐसा करता हूं, तो मैं
new Function
का उपयोग कर सकता हूं, लेकिन मैं वेब वर्कर को नहीं बढ़ा सकता क्योंकि मैं कोई अनुरोध नहीं कर सकता (सैंडबॉक्स वाले पृष्ठ की एक अद्वितीय उत्पत्ति है)।new Worker(...)
SECURITY_ERR
फेंकता है। खिलौने के डिब्बे मेंnew Function
काम करता है अद्वितीय मूल के कारणnew Worker
खिलौने के डिब्बे में विफल रहता है
- नहीं सूची पेज सैंडबॉक्स किए जाने की है। यदि मैं ऐसा करता हूं, तो मैं एक वेब वर्कर उत्पन्न कर सकता हूं, लेकिन कार्यकर्ता
new Function
का उपयोग नहीं कर सकता क्योंकि यह सैंडबॉक्स नहीं है।new Function(...)
इसके उपयोग के बारे में शिकायत करते हुएEvalError
फेंकता है।new Function
गैर-सैंडबॉक्स में किया जा रहाeval
तरहnew Worker
काम करता है की वजह से गैर-सैंडबॉक्स में विफल रहता है
मेरे सीएसपी इस प्रकार है:
sandbox allow-scripts script-src 'self' 'unsafe-eval'; object-src 'self'
मैं क्या कर सकते हैं वेब वर्कर में new Function
काम करने के लिए क्या करें?
यह पता चला कि 'डेटा:' यूआरएल समान मूल मुद्दों के कारण काम नहीं करते हैं, लेकिन ब्लॉब्स से (createObjectURL' URL) लेख काम करते हैं। पूरे कार्यकर्ता स्क्रिप्ट को मुख्य पृष्ठ में इनलाइन करना बहुत सुविधाजनक नहीं है, लेकिन ऐसा लगता है कि यह काम करने का एकमात्र तरीका है। धन्यवाद। – pimvdb
ओह अब मैं देख सकता हूं कि मैंने उत्तर में ऑब्जेक्ट यूआरएल के बजाय डेटा यूआरएल का इस्तेमाल किया, इसके लिए खेद है। आप इसे अधिक सुविधाजनक बनाने के लिए शायद एक बिल्ड कदम कर सकते हैं। – molnarg