2010-09-17 15 views
12

पॉपुलटिंग नहीं है मुझे लगता है कि मैंने इसे कई बार किया है, लेकिन मैं यह नहीं समझ सकता कि क्या गलत हो रहा है।एएसपी.नेट - Response.Redirect यूआरएल रेफरर

Default.aspx:

protected void Page_Load(object sender, EventArgs e) 
{ 
    var r1 = Request.UrlReferrer; // null 
    var r2 = Request.ServerVariables["HTTP_REFERRER"]; // null 
} 

SingleSignOn.aspx:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Redirect("/"); 
} 

तो मैं URL में "/SingleSignOn.aspx" लिखते हैं, तो Default.aspx ले जाती है, लेकिन रेफरर शून्य है।

मुझे यहां क्या याद आ रही है?

window.location.replace('~/SingleSignOn.aspx'); 

कौन सा आपने सही अनुमान लगाया,, में उपयोगकर्ता संकेत:

क्या im करने के लिए (यह एक सरल उदाहरण है), किसी भी पृष्ठ पर है की कोशिश कर रहा, मैं कुछ जावास्क्रिप्ट निम्नलिखित करना होगा और मुखपृष्ठ पर रीडायरेक्ट करता है।

लेकिन अगर हम वहां से आए तो मुझे सिंगलसाइनऑन.एएसपीएक्स पेज पर रीडायरेक्ट नहीं करने के लिए उस जावास्क्रिप्ट में तर्क बनाने की जरूरत है।

क्या रेफरर केवल वास्तविक लिंक उपयोगकर्ता क्लिक द्वारा आबादी प्राप्त करता है?

मैं यह कैसे कर सकता हूं? मैं QueryString का उपयोग नहीं करना चाहता क्योंकि मैं इसे यूआरएल में देखना नहीं चाहता हूं।

एकमात्र अन्य विकल्प जिसे मैं सोच सकता हूं सत्र है।

कृपया मदद करें। = (

+0

जानना उत्सुक है कि आप रीडायरेक्ट क्यों कर रहे हैं जावा-स्क्रिप्ट। आपके द्वारा वर्णित परिदृश्य, यदि सर्वर प्रमाणीकृत है या नहीं, तो मैं सर्वर पक्ष (संभवतः बेस पेज पर ऑनइन) पर जांच करता। अगर नहीं, तो रीडायरेक्ट करें पेज जो यह करता है। – VinayC

+0

@ विनायक - यह जटिल है।मूल रूप से एक फेसबुक कनेक्ट ऐप पर काम कर रहा हूं - पेज लोड होने के बाद, जावास्क्रिप्ट मुझे बताता है कि मैं उन्हें साइन इन करने में सक्षम हूं, इसलिए मैं रीडायरेक्ट करता हूं। मैं नहीं जानता कि मैं क्लाइंट-साइड एपीआई निष्पादित होने तक उन्हें साइन कर सकता हूं या नहीं। – RPM1984

+0

ठीक है, जब आप प्रमाणीकृत होते हैं और फिर जावास्क्रिप्ट से अपनी खुद की कुकी जोड़ सकते हैं, तो आप देख सकते हैं कि कुकी मौजूद है या नहीं, यह तय करने के लिए कि क्या रीडायरेक्ट करना है या नहीं। यदि आप कुकी का उपयोग नहीं करना चाहते हैं तो आपके पेज (बेस पेज में किए जाने चाहिए) को कुछ जेएस वैरिएबल सेट करना होगा यदि उपयोगकर्ता प्रमाणित है। कुकी दृष्टिकोण के बीच अंतर यह है कि कुकी को केवल एक बार सेट करने की आवश्यकता होती है (सिंगल सिग्नलऑन.एएसपीएक्स में) जबकि जेएस वैरिएबल प्रत्येक पृष्ठ में सेट होना चाहिए (इसलिए तर्क को एक सामान्य बेस पेज में रखा जाना चाहिए)। – VinayC

उत्तर

9

तो, मैं अपने जवाब खोजने के लिए कुछ Google'ing किया है

स्टैक ओवरफ़्लो करने के लिए नहीं, धन्यवाद -। मजाक, =)

तो यूआरएल संदर्भ केवल एक वास्तविक ग्राहक की आबादी है -क्लिक (एंकर टैग, बटन)।

जब आप इसे मैन्युअल रूप से URL में नहीं डालते (जो मेरी जावास्क्रिप्ट कर रहा है)।

जिस समाधान के साथ मुझे करना है, वह सिंगल सिग्नलऑन.एएसपीएक्स पेज पर एक कुकी बनाना है, और फिर से रीडायरेक्ट करने से पहले जावास्क्रिप्ट से उस कुकी को पढ़ें।

बस मुझे जो चाहिए, और कुकीज़। = (

जब तक किसी को यहाँ एक बेहतर विचार है, कि क्या बीमार भी http सहित बस एक कूबड़ के साथ जा रहा

+1

बहुत बहुत धन्यवाद, मुझे एक बहुत ही समान समाधान की आवश्यकता थी क्योंकि मैं एक हॉजपोज विज़ार्ड को संशोधित कर रहा था जहां आप वास्तव में कदम छोड़ सकते थे क्योंकि वे रेफरर की पुष्टि नहीं कर रहे थे। मैंने 'UrlReferrer' भी कोशिश की और यह विकास में काम किया और आईआईएस में तैनात किए जाने में असफल रहा। एक कुकी समाधान सही था! –

0

, लेकिन कोशिश एक पूर्ण यूआरएल का उपयोग कर के बजाय/है:।। // हिस्सा

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

+0

हाँ मैंने कोशिश की, मेरा उत्तर ऊपर देखें - केवल क्लाइंट क्लिक (बटन, एंकर) रेफरर http हेडर पॉप्युलेट होने का कारण बनता है। – RPM1984

+0

@ RPM1984 के, लेकिन रीडायरेक्ट ("/") बिल्कुल मैंने जो उल्लेख किया है, वह रीडायरेक्ट ("http://myserver.com/") जैसा होगा। – eglasius

+0

हां - कोशिश की, एक ब्रांड नई वेब प्रोजेक्ट में भी कोशिश की (इसलिए कोई अन्य कारक नहीं - यानी यूआरएल रीराइटिंग रास्ते में आ जाएगी)। नही जाओ। वैसे भी कुकी समाधान काम कर रहा है, और तथ्य यह है कि मुझे पिछले पृष्ठ को क्लाइंट-साइड से "चेक" करने की ज़रूरत है, जिससे यह वास्तव में एक कुकी बन जाती है। आपकी मदद के लिए धन्यवाद। – RPM1984

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