2016-07-05 22 views
9

के साथ HTTP 401 लौटने का अनुरोध मैंने अपनी समस्या के समाधान खोजने के लिए Google और स्टैक ओवरफ़्लो पर बहुत कुछ खोजा, लेकिन कुछ भी काम नहीं किया।सीओआरएस प्रीफलाइट अनुरोध विंडोज प्रमाणीकरण

  • मैं आईआईएस 7 का उपयोग एक विशेष प्रोग्रामिंग वातावरण बुलाया webdev कि OPTIONS HTTP विधि के सीधे प्रभाव की अनुमति नहीं है के साथ:

    यहाँ मेरी समस्या है। इसलिए, कोड का उपयोग कर किसी प्रकार का सर्वर-साइड अनुरोध हैंडलिंग का सुझाव देने वाले सभी समाधान संभव नहीं हैं।

  • मैं खिड़की प्रमाणीकरण का उपयोग और अनाम पहुंच

  • निष्क्रिय करने के लिए मैं एक पेज इस सर्वर पर पोस्ट करने के CORS का उपयोग करता है है। चूंकि इस पोस्ट में Content-type: Octet-stream होना चाहिए, ब्राउज़र द्वारा प्रीफलाइट जारी किया गया है।

  • जब मैं गुमनाम पहुँच सक्षम है, सब कुछ ठीक काम करता है (CORS अच्छी तरह से कॉन्फ़िगर किया गया है)

  • जब मैं गुमनाम पहुँच को अक्षम, सर्वर, HTTP 401 preflight अनुरोध करने के लिए अनधिकृत प्रतिक्रिया के साथ उत्तर के रूप में यह साख शामिल नहीं है जानकारी।

  • मैं आईआईएस है कि इस तरह विकल्प अनुरोध स्वीकार करने के लिए एक मॉड्यूल लिखने का प्रयास किया है, लेकिन यह काम नहीं किया (नहीं हो सकता है आईआईएस के लिए सही ढंग से मॉड्यूल जोड़ सकता है,)

    public class CORSModule : IHttpModule 
        { 
    
          public void Dispose() { 
          } 
    
          public void Init(HttpApplication context) 
          { 
           context.PreSendRequestHeaders += delegate 
           { 
            if (context.Request.HttpMethod == "OPTIONS") 
            { 
             var response = context.Response; 
             response.StatusCode = (int)HttpStatusCode.OK; 
            } 
           }; 
          } 
        } 
    

सवाल है: मैं आईआईएस को HTTP सर्वर के साथ अज्ञात पहुंच सक्षम करने या कुछ सर्वर-साइड कोड लिखने के बिना प्रीफलाइट अनुरोध के साथ कैसे प्रतिक्रिया दे सकता हूं? आईआईएस के लिए ऐसा करने के लिए कोई आसान कॉन्फ़िगरेशन या तैयार मॉड्यूल है? कम से कम, उपरोक्त मॉड्यूल को आईआईएस 7 में स्थापित करने के लिए विस्तृत कदम क्या हैं?

उत्तर

7

यहां समाधान है जो "यूआरएल रिवाइट" आईआईएस मॉड्यूल का उपयोग करता है। यह पूरी तरह से काम करता है।

1- बंद करो आईआईएस सेवा (शायद आवश्यक नहीं)

2- https://www.microsoft.com/web/downloads/platform.aspx

3- जाओ करने के लिए "अनुप्रयोग" टैब से स्थापित करें "वेब मंच संस्थापक" और "URL पुनर्लेखन" के लिए खोज और इसे डाउनलोड

4- इस हॉटफिक्स KB2749660 (शायद आवश्यक नहीं)

5- ओपन IIS कॉन्फ़िगरेशन उपकरण, डबल क्लिक करें "URL पुनर्लेखन"

स्थापित करें 63,210

6- एक नया blankrule

7- यह किसी भी नाम

8- दें में "मिलान यूआरएल" जोड़ें, इस पैटर्न निर्दिष्ट करें: .*

9- "शर्तें" में, इस हालत प्रविष्टि निर्दिष्ट : {REQUEST_METHOD} और इस पैटर्न: ^OPTIONS$

10- में "कार्रवाई", निर्दिष्ट करें: क्रिया प्रकार Personalized response, राज्य कोड 200, कारण Preflight, विवरण Preflight

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

11- सर्वर

प्रारंभ करें, प्रमाणीकरण के बावजूद सर्वर को प्रीफलाइट अनुरोध के 200 स्थिति कोड प्रतिक्रिया के साथ जवाब देना चाहिए।

टिप्पणियां: मैंने सभी संपीड़न को भी अक्षम कर दिया, मुझे नहीं पता कि यह महत्वपूर्ण है या नहीं।

+2

भाई +1 सेवर जीवन –

0

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

4

AhmadWabbi का जवाब, अपने web.config में आसान एक्सएमएल चिपकाने से:

<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="CORS Preflight Anonymous Authentication" stopProcessing="true"> 
       <match url=".*" /> 
       <conditions> 
        <add input="{REQUEST_METHOD}" pattern="^OPTIONS$" /> 
       </conditions> 
       <action type="CustomResponse" statusCode="200" statusReason="Preflight" statusDescription="Preflight" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 
संबंधित मुद्दे