2012-01-06 22 views
7

के लिए यूआरएल रिवाइट का उपयोग कर कुकी में एक मूल्य कैप्चर करना मुझे अपनी आईआईएस 7.5 वेबसाइट के लिए एक यूआरएल रिवाइट नियम लिखना होगा जो एक विशेष कुकी में एक मूल्य कैप्चर करता है, और उसके बाद यूआरएल बनाने के लिए उस मान का उपयोग करता है। उदाहरण के लिए, आने वाले अनुरोधों को इस तरह दिखता है:आईआईएस 7

http://myserver.com/bar/test.aspx 

fter दस्तावेज़ों की समीक्षा और खोज:

GET http://myserver.com/test.aspx HTTP/1.1 
Accept: text/html, application/xhtml+xml, */* 
Accept-Language: en-US 
User-Agent: Mozilla/5.0 
Host: myserver.com 
Cookie: foo=bar; bat=bar 

मैं उन्हें इस के लिए रास्ते में ("foo" कुकी मान पर आधारित) करना चाहते हैं उदाहरण के लिए, मैं फंस गया हूँ! आपकी सहायता के लिए धन्यवाद.

उत्तर

9

मेरे अपने प्रश्न का उत्तर देते हुए, यहां एक कामकाजी उदाहरण है। पैटर्न को अतिरिक्त कार्यों की आवश्यकता हो सकती है कि किन पात्रों को समर्थन की आवश्यकता है, लेकिन निम्न नियम खोजे गए कुकी मूल्य और खोजे गए सर्वर पर रूट का उपयोग करेगा - और सर्वर को IPv4 पते या नाम से निर्दिष्ट किया जा सकता है (अल्फान्यूमेरिक-एंड-अवधि)।

<rule name="Route Base On Cookie" stopProcessing="true"> 
    <match url="^(.*)" /> 
    <conditions> 
     <add input="{HTTP_COOKIE}" pattern="foo=([0-9.a-zA-Z]+)" /> 
    </conditions> 
    <action type="Rewrite" url="http://{C:1}/{R:0}" /> 
</rule> 
+0

मैं पैटर्न को किसी भी संभावित कुकी मान से मिलान करने के लिए 'pattern = "foo = [^;] *" 'की सिफारिश करता हूं - आपका पैटर्न बहुत ही सीमित है। देखें [नेटस्केप.कॉम से मूल नमूना] (http://curl.haxx.se/rfc/cookie_spec.html) जो कहता है "यह स्ट्रिंग सेमी-कोलन, कॉमा और व्हाइट स्पेस को छोड़कर वर्णों का एक अनुक्रम है। अगर वहां है नाम या मूल्य में ऐसे डेटा को रखने की आवश्यकता है, कुछ एन्कोडिंग विधि जैसे यूआरएल शैली% एक्सएक्स एन्कोडिंग की सिफारिश की जाती है, हालांकि कोई एन्कोडिंग परिभाषित या आवश्यक नहीं है। " आप इसे शाब्दिक रूप से 'pattern =" foo = [^;, \ s] * "' – ErikE

+0

@Geoffrey के साथ ले सकते हैं - मुझे इसी क्षेत्र में समस्या का सामना करना पड़ रहा है - क्या आप इसका उत्तर दे सकते हैं? - http://stackoverflow.com/questions/34506551/reading-cookie-value-using-url-rewrite-for-iis- जादूगर-unable-to- validate-at – codetoshare

1

@Geoffrey किसी भी कुकी मूल्य लौटने अपने कोड समर्थन करने के लिए, मैं इस पद्धति की सलाह देते हैं:

<add input="{HTTP_COOKIE}" pattern="foo=(.*?);" /> 

आपको बता दें कि {HTTP_COOKIE} मान उदाहरण के लिए इस तरह दिखता है:

कुकी: foo = myexamplevalue; समाप्ति = बुध, 03-मई -2014 22:31:08 जीएमटी; पथ = /; HttpOnly \ r \ n

+0

मैंने मूल रूप से आपके regex को सही करने के लिए टिप्पणी की, खोजने के लिए आओ बाहर, '' '' '' लालची बनाता है। बहुत बढ़िया। हालांकि मैं नकारात्मक वर्ण वर्गों को पसंद करता हूं क्योंकि वे संभावित रूप से तेज़ होते हैं (विशेष रूप से जब निष्क्रिय संशोधक '+ 'दिया जाता है)। – ErikE