6

के साथ एमवीसी रीडायरेक्ट उम्मीद है कि यह किसी के लिए बाहर एक साधारण सवाल है।कस्टम हेडर

असल में मेरी MVC नियंत्रक के लिए एक अनुरोध प्राप्त होने पर, मैं चाहता हूँ:

  1. किसी अन्य डोमेन पर बैठे पढ़ें एक अन्य आवेदन के जवाब के लिए एक "प्राधिकरण" शीर्ष लेख जोड़ें
  2. रीडायरेक्ट " प्राधिकरण "इस बाहरी साइट पर शीर्षलेख।

यह रीडायरेक्टिंग का कार्य प्रतीत होता है, मेरे सभी कस्टम शीर्षलेखों और रीडायरेक्ट को स्ट्रिप्स करता है।

मेरा प्रश्न, मैं एक नया हेडर कैसे जोड़ सकता हूं, और एक रीडायरेक्ट कर सकता हूं, और यह हेडर प्राप्तकर्ता होस्ट [रीडायरेक्ट के अंत में] पढ़ने के लिए हेडर में दिखाई देता है?

उत्तर

2

नहीं - 302 रीडायरेक्ट ब्राउज़र द्वारा संभाला जाता है और यह हेडर को फिर से संलग्न नहीं करेगा।

विकल्प:

  • सर्वर साइड प्रॉक्सी
  • उपयोग अन्य हेडर के बजाय कुकीज़
  • मैनुअल रीडायरेक्ट क्लाइंट साइड (अगर यह एक ही डोमेन, नहीं 2 प्रति अपने मामले है) (के बाद से ठीक हो सकता है आप वैसे भी AJAX कॉल कर रहे हैं)।
+0

मुझे इस मैनुअल रीडायरेक्ट क्लाइंट पक्ष के बारे में और बताएं (ठीक है क्योंकि आप एजेक्स कॉल कर रहे हैं)। ' – user1265146

+0

मुझे यह विचार पसंद है ... इस मैनुअल रीडायरेक्ट क्लाइंट साइड के बारे में मुझे और बताएं (ठीक है क्योंकि आप एजेक्स कॉल कर रहे हैं)। ' मुझे ऑथ हेडर सेट करना होगा और इसे एक नई विंडो या टैब में खोलना होगा। – user1265146

+0

@ user1265146 - "मैन्युअल" के रूप में आपके सर्वर से सामान्य 200 प्रतिक्रिया प्राप्त होती है जिसमें '{header: XXXX, location: url} 'जैसी कुछ होती है और उस स्थान पर दूसरा AJAX अनुरोध करता है।अब जब से आप शायद दूसरे डोमेन पर पोस्ट करना चाहते हैं, तो आप उस अनुरोध को बिल्कुल भी नहीं कर पाएंगे (जब तक कि अन्य डोमेन सीओआरएस का समर्थन नहीं करता)। –

8

आप नहीं कर सकते। ऐसा नहीं है कि HTTP कैसे काम करता है। सबसे पहले, "रीडायरेक्ट" केवल 301, 302, या (HTTP 1.1 के बाद) Location हेडर के साथ 307 स्टेटस कोड है जिसे क्लाइंट को यूआरएल पर सेट किया जाना चाहिए। यह क्लाइंट है जो उस यूआरएल के अनुरोध को शुरू करता है, इसलिए आपके पास कौन से शीर्षलेख भेजे गए हैं, इस पर आपका कोई नियंत्रण नहीं है।

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

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

एफडब्ल्यूआईडब्ल्यू, यहां मूलभूत आधार, एक अलग डोमेन के साथ प्रमाणीकरण स्थिति साझा करना, बिल्कुल ओएथ जैसी तकनीकों के लिए विकसित किया गया था। तो उस दिशा में प्रत्यक्ष भविष्य अनुसंधान।

+0

@chrris बहुत अच्छी प्रतिक्रिया के लिए धन्यवाद। मैं वास्तव में ओएथ का उपयोग कर रहा हूं, लेकिन एक बहुत ही विशिष्ट उपयोग मामले के साथ जहां हम लॉगिन के लिए रीडायरेक्ट नहीं करते हैं, यह सब 'विश्वसनीय ऐप' से हैडल किया गया है, अब मैं हेडर में टोकन चिपकाना चाहता हूं ताकि एक और 'विश्वसनीय ऐप 'दावों को पढ़ सकता है और तदनुसार प्रक्रिया ... सभी को आईडीपी पर रीडायरेक्ट किए बिना। एलेक्सी ने क्लाइंट में ऐसा करने का उल्लेख किया, जो संभव है क्योंकि मेरे पास क्लाइंट पर टोकन है। मुझे सिर्फ लेख शीर्षलेख जोड़ने में सक्षम होना चाहिए और एक नए टैब/विंडो में आग लगाना है। मुझे लगता है कि यह संभव है? – user1265146

+2

जो आप वर्णन कर रहे हैं वह ओथ और HTTP बहुत ही महत्वपूर्ण है क्योंकि प्रोटोकॉल उद्देश्य पर अस्वीकार करता है। यह * आप * निर्धारित नहीं करता है कि "विश्वसनीय ऐप" क्या है और यह नहीं है, यह * उपयोगकर्ता * है। यह एक ज्ञात इकाई के साथ प्रमाणीकरण के माध्यम से किया जाता है। एक बार एक अलग इकाई शामिल हो जाने के बाद, प्रमाणीकरण फिर से जरूरी है क्योंकि उपयोगकर्ता ने उस नई इकाई पर भरोसा नहीं किया है। डिजाइन * द्वारा इस * के आसपास स्कर्ट करने का कोई तरीका नहीं है। एक बड़ी सुरक्षा दोष होने में सक्षम होने के लिए। –

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