2010-12-06 18 views
6

में हेडर मान पढ़ने में परेशानी हो रही है यह सभी आंतरिक सर्वर और सॉफ़्टवेयर है, इसलिए मैं अपने विकल्पों पर बहुत सीमित हूं, लेकिन यह वह जगह है जहां मैं हूं। यह पहले से ही एक कामकाज के लिए एक बैंड-सहायता है लेकिन मेरे पास कोई विकल्प नहीं है, इसलिए मैं इसे काम करने की कोशिश कर रहा हूं।क्लासिक एएसपी

मेरे पास मेरे सर्वर पर एक साधारण .asp फ़ाइल है जो एक सेवा द्वारा संरक्षित है जो उपयोगकर्ता प्रमाणीकरण को संभालेगी (मेरे पास इस सेवा पर कोई नियंत्रण नहीं है)। जब कोई उपयोगकर्ता इस .asp फ़ाइल पर जाता है, तो उसे सेवा के माध्यम से प्रमाणित करने की आवश्यकता होती है, और सेवा तब उन्हें .asp पर रीडायरेक्ट करती है।

सेवा http शीर्षलेख में कस्टम मान डाल रही है जो मुझे यह पहचानने की अनुमति देती है कि किसने लॉग इन किया है (मुझे इसे लाइन के नीचे की आवश्यकता है)। जब मैं हेडर से ALL_RAW और ALL_HTTP मान देखने के लिए एएसपी का उपयोग करता हूं, तो मैं सभी कस्टम मान देख सकता हूं। लेकिन जब मैं इन मूल्यों को विशेष रूप से कॉल करने का प्रयास करता हूं तो मुझे कुछ भी नहीं मिलता है।

<% 
for each x in Request.ServerVariables 
    response.write("<B>" & x & ":</b> " & Request.ServerVariables(x) & "<p />") 
next 
%> 

और सभी चाबियाँ कस्टम सहित प्रदर्शन:

मैं इस सरल पाश भाग गया। लेकिन कस्टम मानों में से कोई भी होगा। मूल्य मुझे आवश्यक हिस्सा हैं।

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

मैं इन कस्टम मानों को क्यों नहीं पढ़ सकता?

+1

यह हो सकता है कि प्रश्न में सेवा एन्कोडिंग गलत हो रही है या एक नल बाइट या अन्य अदृश्य चरित्र डालने वाला है जो पार्सिंग को खराब कर रहा है।या हो सकता है कि यह सेवा हेडर को बहुत देर हो रही है। –

उत्तर

1

निष्कासन के लिए, क्यों न सिर्फ अनुरोध करें। सर्वरवेरीबल्स ("ALL_RAW") स्वयं को पार्स करें।

+0

असल में, मैंने यह प्रश्न पोस्ट किया, फिर बस ऐसा करने के बारे में सेट किया। सिवाय इसके कि मैं ALL_HTTP पार्स करने की कोशिश कर रहा था। लेकिन आप स्पष्ट रूप से "ऑल_एचटीटीपी को पार्स नहीं कर सकते"। यह vbCrLf पर विभाजित नहीं होगा। लेकिन आपके उल्लेख पर, मैंने ALL_HTTP को ALL_RAW के साथ बदलने की कोशिश की, और यह vbCrLf पर विभाजित होगा, इसलिए अभी, यह वह दिशा है जिसका मैं नेतृत्व कर रहा हूं। – MitchelWB

12

मुझे मेरा जवाब मिला।

जब मैं इस पाश

<% 
for each x in Request.ServerVariables 
    response.write("<B>" & x & ":</b> " & Request.ServerVariables(x) & "<p />") 
next 
%> 

यह सब ऐसे नाम हैं जो शीर्ष लेख और उनके मूल्यों में थे की एक सूची वापस होगा भाग गया। मैं जिस कस्टम वैल्यू को ढूंढ रहा था वह "HTTP_CUSTOM_ID" नाम के रूप में दिखाया जाएगा और मैं इसे देख सकता हूं, इसके मूल्य ALL_HTTP और ALL_RAW में है, लेकिन जब मैंने उस विशिष्ट मान को खींचने का प्रयास किया, तो यह एक खाली स्ट्रिंग वापस कर देगा।

<%=Request.ServerVariables("HEADER_CUSTOM_ID")%> 

जब पूर्ण हेडर को देखने, कुछ भी नहीं है मुझे नेतृत्व: समाधान मैं पर ठोकर खाई (किसी और यहाँ काम, जो एक ही सेवा मैं समायोजित करने के लिए कोशिश कर रहा था के साथ एक इसी तरह की स्थिति के माध्यम से चला गया था पर से बात करके उपयोग करने के लिए है HTTP के बजाय हेडर उपसर्ग का उपयोग करने के लिए, वास्तव में, यह मुझे विपरीत बना देता है। और मुझे कभी भी ऑनलाइन खोज करने का कोई उल्लेख नहीं मिला। इसलिए मैं अपने प्रश्न का अपना उत्तर यहां पोस्ट कर रहा हूं, इसलिए यह वेब पर है।

+1

यह वास्तव में आज मेरी मदद की। मुझे वास्तव में पुरानी परियोजना पर कुछ काम करना पड़ा। धन्यवाद। – jessegavin

+2

दस्तावेज़ीकरण के हित में, [आईआईएस सर्वर वैरिएबल] के लिए एमएसडीएन पृष्ठ (http://msdn.microsoft.com/en-us/library/ms524602%28VS.90%29.aspx) HEADER_ उपसर्ग का उल्लेख करता है, और [ यह ब्लॉग पोस्ट] (http://blogs.msdn.com/b/david.wang/archive/2006/04/20/howto-retrieve-request-headers-using-isapi-asp-and-asp-net.aspx) कुछ विवरणों में जाता है कि यह आवश्यक क्यों है। (सारांश: सीजीआई स्पेक का कहना है कि "HTTP_" को अंडरस्कोर को डैश के साथ प्रतिस्थापित करना चाहिए, इसलिए "HEADER_" के बिना, "ALL_RAW" पार्सिंग उनके नामों में अंडरस्कोर के साथ चर प्राप्त करने का एकमात्र तरीका है।) –

+0

धन्यवाद इससे मुझे बहुत मदद मिली – drew630

0

प्रत्येक आइटम को पार्स खुद के तुलना में एक बेहतर तरीका है। Request.ServerVariables("ALL_HTTP") में मूल्यों को देखो और हैडर जो आपको चाहिए लेकिन नाम पर कुछ भिन्न।

+०१२३५१६४१०६१

सभी HTTP शीर्षलेख HTTP_ के साथ शुरू होते हैं। मैं की तलाश में था अगर-कोई नहीं-मैच और यह संग्रह में HTTP_IF_NONE_MATCH संग्रह में था। मूल्य प्राप्त करने के लिए मैंने Request.ServerVariables("HTTP_IF_NONE_MATCH") का उपयोग किया।

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