लोड किए गए पृष्ठ को आईफ्रेम के भीतर सर्वर-साइड (सी #, एएसपीएनटी एमवीसी) का पता कैसे लगाया जा सकता है? धन्यवादपता लगाएं कि कोई पृष्ठ आईफ्रेम के भीतर है - सर्वरसाइड
उत्तर
हालांकि यह संभव नहीं है।
<iframe src="mypage?iframe=yes"></iframe>
और उसके बाद जाँच serverside यदि क्वेरी स्ट्रिंग आइफ्रेम शामिल = हाँ या ब्राउज़र द्वारा भेज Referer हेडर के साथ।
यह जांचने का कोई तरीका नहीं है कि @ डब्ल्यूटीपी के उत्तर पर आपकी टिप्पणी में बताए गए "सुरक्षित" की आपकी आवश्यकता के अनुरूप होगा।
मुझे नहीं लगता कि सर्वर-पक्ष ऐसा कर सकता है, तो अपने पृष्ठ में एक छिपी हुई नियंत्रण क्यों न डालें जो आईफ्रेम में होगा? जब आईफ्रेम लोड में यूआरएल होता है, तो आप छिपे हुए इनपुट को सेट करने के लिए कुछ क्लाइंट-साइड कोड जोड़ सकते हैं ताकि यह इंगित किया जा सके कि आप आईफ्रेम में हैं। सबसे आसान जांच एक ऑनलोड विधि में क्लाइंट-साइड पर हो सकता है, इस तरह:
// Set hidden input
someHiddenInput.value = self != top
यह क्वेरी स्ट्रिंग तुलना में अधिक सुरक्षित है, लेकिन यह अभी भी आप के लिए पर्याप्त सुरक्षा नहीं हो सकता है।
मेरा 2 सेंट।
प्रपत्र के अंदर निम्नलिखित कोड का उपयोग करें:
<asp:HiddenField ID="hfIsInIframe" runat="server" />
<script type="text/javascript">
var isInIFrame = (self != top);
$('#<%= hfIsInIframe.ClientID %>').val(isInIFrame);
</script>
तो आप आसानी से देख सकते हैं कि उस में कोड-पीछे एक iFrame है:
bool bIsInIFrame = (hfIsInIframe.Value == "true");
परीक्षण किया गया है और मेरे लिए काम किया।
संपादित करें: कृपया ध्यान दें कि आपको ऊपर दिए गए कोड को चलाने के लिए jQuery की आवश्यकता है। इसे चलाने के लिए बिना jQuery सिर्फ निम्नलिखित (untested) कोड जैसे कुछ कोड का उपयोग छिपी हुई फ़ील्ड का मान सेट करने के लिए:
document.getElementById('<%= hfIsInIframe.ClientID %>').value = isInIFrame;
संपादित करें 2: यह केवल काम करता है जब पेज एक बार लोड किया गया था। अगर किसी को यह सुधारने का विचार है, तो मुझे बताएं। मेरे मामले में मैं सौभाग्य से केवल एक पोस्टबैक के बाद मूल्य की जरूरत है।
यह जवाब होना चाहिए। –
नहीं @RoyiNamir, यह सर्वरसाइड समाधान नहीं है;) – tetri
@tetri, इस कोड के साथ यदि आप iframe में हैं तो आप सर्वरसाइड से जांचने में सक्षम हैं। मैं मानता हूं कि कुछ क्लाइंट-कोड हैं - लेकिन मेरी राय में यह सबसे अच्छा समाधान है क्योंकि यह परवाह नहीं करता कि पृष्ठ को कैसे कॉल किया जाता है। वर्तमान स्वीकृत उत्तर के लिए प्रत्येक आईफ्रेम में अनुरोध मान सेट करने की आवश्यकता होती है - और यह भुला दिया जा सकता है। – Undercover1989
- 1. पता लगाएं कि कोई वीडियोविव
- 2. पता लगाएं कि कोई वैरिएबल मौजूद है
- 3. पता लगाएं कि कोई बिंदु MKPolygon ओवरले
- 4. पता लगाएं कि कोई जावास्क्रिप्ट फ़ंक्शन चल रहा है
- 5. पता लगाएं कि माउस पृष्ठ के शीर्ष पर jquery
- 6. पता लगाएं कि कोई उपयोगकर्ता UITextView
- 7. पता लगाएं कि जब कोई पाइथन मॉड्यूल
- 8. पता लगाएं कि कोई पेड़ अन्य
- 9. पता लगाएं कि हैश
- 10. पता लगाएं कि Django
- 11. पता लगाएं कि पाइथन
- 12. पता लगाएं कि स्ट्रिंग
- 13. पता लगाएं कि
- 14. पता लगाएं कि लिनक्स
- 15. पता लगाएं कि सी #
- 16. पता लगाएं कि UIScrollView
- 17. पता लगाएं कि कोड
- 18. पता लगाएं कि फ़ाइल
- 19. पता लगाएं कि एंड्रॉइड
- 20. पता लगाएं कि qt रनटाइम
- 21. पता लगाएं कि माउस जावास्क्रिप्ट
- 22. पता लगाएं कि उपयोगकर्ता द्वारा
- 23. यह पता कैसे लगाएं कि कोई पता कोई व्यवसाय या आवासीय पता है
- 24. जावास्क्रिप्ट: पता लगाएं कि पृष्ठ को "वापस" ने
- 25. सी # 4.0, पता लगाएं कि कोई विधि गुम है
- 26. Google ऐप इंजन - पता लगाएं कि कोई उपयोगकर्ता व्यवस्थापक है
- 27. पता लगाएं कि कोई पाइथन मॉड्यूल बदलता है और फिर
- 28. कैसे पता लगाएं कि कोई PropertyInfo संग्रह है
- 29. पता लगाएं कि कोई टेक्स्टबॉक्स अक्षम है या jquery
- 30. पता लगाएं कि जब कोई jQuery AJAX कॉल
धन्यवाद, लेकिन यह मेरी समस्या का समाधान नहीं करता है क्योंकि मैं चाहता हूं कि पेज केवल तभी पहुंचा जा सके जब किसी आईफ्रेम (कुछ सुरक्षा कारणों से) में। क्वेरीस्ट्रिंग में कुछ जोड़ना सुरक्षित होने के लिए करना बहुत आसान है। – pistacchio
यदि यह सुरक्षा कारणों से है, तो आप कुछ गलत कर रहे हैं। सबसे अच्छा, एकमात्र चीज जो आपको आईफ्रेम में होने के लिए संकेत दे सकती है वह एक रेफरर है। और यहां तक कि वह फोर्ज करने योग्य है। सुरक्षा जांच और सत्यापन द्वारा किया जाता है, धारणाओं के नाजुक जाल से नहीं। – Yuliy