2015-03-26 14 views
8

मैंने HTTP सर्वर पर पास किए गए यूआरएल पैरामीटर के आधार पर जेएनएलपी फ़ाइलों को गतिशील रूप से जेनरेट करने की कोशिश करते हुए एक उत्सुक बात देखी है। अगर मैं अपने एचटीएमएल कोड में कुछ इस तरह है, यह काम करता है:जेएनएलपी यूआरएल में% शामिल होने पर जावा वेबस्टार्ट एप्लिकेशन शुरू करने से इनकार क्यों करता है?

<embed type="application/x-java-applet;" launchjnlp="dummy%3f.jnlp"/> 
:

<embed type="application/x-java-applet;" launchjnlp="dummy.jnlp"/> 

मैं launchjnlp विशेषता में एक % चरित्र है दूसरी तरफ हैं, तो प्लग बस कुछ नहीं करेंगे

कोई त्रुटि संदेश नहीं, कोई डिफ़ॉल्ट जावा स्पलैश स्क्रीन नहीं, कुछ भी नहीं, यह चुपचाप विफल रहता है। (जेएनएलपी फ़ाइल को पुनः प्राप्त करने का भी प्रयास किए बिना।)

क्या यह किसी प्रकार की सुरक्षा सुविधा है? यदि ऐसा है, तो इसके खिलाफ सुरक्षा करना क्या है?
या यह एक सीधा बग हो सकता है?

अद्यतन: एक % संकेत के बजाय &#37; इकाई का उपयोग या तो काम नहीं करता।
अद्यतन 2: मैंने कोशिश की और launchjnlp विशेषता का सही अर्थ विज्ञान पर किसी भी प्रलेखन खोजने में असफल रहा है, लेकिन पूरे टैग deployJava.launchWebStartApplication(jnlp) द्वारा उत्पन्न होता है, जो माना जाता है कि एक वेब की शुरूआत किसी ब्राउज़र से आवेदन शुरू की "आधिकारिक" रास्ता है ।
अद्यतन 3: बस इसके बारे में बिल्कुल क्रिस्टल स्पष्ट होने के लिए: उपरोक्त उदाहरण बस यही है: एक उदाहरण। आप वर्णित व्यवहार को पूरी तरह से किसी भी यूआरएल (रिश्तेदार, पूर्ण, फ़ाइल: //, http: //, आप इसे नाम दें), किसी भी यूआरएल-एन्कोडेड वर्ण, या यहां तक ​​कि एक अमान्य भागने अनुक्रम (हालांकि उसमें यदि यह अधिक या कम उचित है), वास्तविक जेएनएलपी फ़ाइल का अस्तित्व या अनुपस्थिति अप्रासंगिक है, क्योंकि हम उस बिंदु तक भी नहीं पहुंचते हैं जहां प्लगइन जेएनएलपी फ़ाइल लोड करने का प्रयास करेगा।

+1

क्या आपने HTML इकाई '%' का उपयोग करने का प्रयास किया था? – Obicere

+0

@ ओबिसेर मैंने अभी कोशिश की है और यह या तो काम नहीं करता है। यह आश्चर्यजनक नहीं है कि मैं जावा प्लगइन तक पहुंचने से पहले इकाई को हल करने की अपेक्षा करता हूं। – biziclop

+0

यूआरएल में, यूआरएल एन्कोडेड कैरेक्टर की शुरुआत को चिह्नित करने के लिए% sign का उपयोग किया जाता है।किसी URL में शाब्दिक% होने के लिए, आपको इसे URL-एन्कोड करना होगा (यानी -% 25 के साथ% को प्रतिस्थापित करें)। Http://en.wikipedia.org/wiki/Percent-encoding –

उत्तर

6

क्या यह किसी प्रकार की सुरक्षा सुविधा है? यदि यह है, तो इसे रोकने के लिए क्या माना जाता है? या यह एक सीधा बग हो सकता है?

जो मैं उजागर कर सकता हूं उससे, 'सरल बग' उत्तर है। यहाँ मुद्दा पेज है:

https://bugs.openjdk.java.net/browse/JDK-8043409

ऐसा लगता है कि यह JDK 9. की रिहाई

मैं एक अलग JDK कार्यान्वयन की कोशिश कर सुझाव देंगे जब तक लगाई जानी थीं नहीं कर रहा है, लेकिन है कि परिवर्तन की संभावना नहीं लगती है amount of code shared between the Oracle and OpenJDK implementations और कुछ तथ्य यह है कि WebStart code appears to be proprietary/closed-source दिया गया है।

तो बेस 64-एन्कोडिंग के साथ तैयार किए गए वर्कअराउंड शायद अब के लिए सबसे अच्छा विकल्प है। यदि आपको अक्सर ऐसा करना है, तो शायद एन्कोडिंग चरण deployJava.launchWebStartApplication(jnlp) जावास्क्रिप्ट एपीआई में घुमाया जा सकता है ताकि जब आवश्यक हो तो यह स्वचालित रूप से होता है।

+0

धन्यवाद, मुझे नहीं पता था कि प्लगइन कार्यान्वयन बंद स्रोत था। ओह अच्छा। – biziclop

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