2012-11-08 47 views
6

मैं क्रॉस-डोमेन अनुरोध करने का प्रयास कर रहा हूं और मेरा सर्वर निम्न शीर्षलेख भेजने के लिए कॉन्फ़िगर किया गया है:विकल्प 405 (विधि अनुमत नहीं है) परवाह किए बिना सर्वर एक्सेस-कंट्रोल-स्वीकृति-तरीके भेजता है: विकल्प, प्राप्त करें, HEAD, POST

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Headers:x-requested-with, Authorization 
Access-Control-Allow-Methods:OPTIONS, GET, HEAD, POST 
Access-Control-Allow-Origin:* 

लेकिन जब एक विकल्प अनुरोध किया जाता है, तो मुझे OPTIONS 405 (Method Not Allowed) त्रुटि मिलती है।

कोई विचार क्या समस्या है और इसे कैसे ठीक किया जाए?

+0

की संभावित डुप्लिकेट [? पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति एकाधिक उत्पत्ति डोमेन] (http://stackoverflow.com/questions: एएसपी क्लासिक का उपयोग कर रहे हैं, तो है कि अपने Web.config फ़ाइल के लिए निम्नलिखित लाइनों को जोड़ने का मतलब होगा/1653308/एक्सेस-कंट्रोल-अनुमति-मूल-बहु-मूल-डोमेन) – kenorb

उत्तर

6

आपका वेब सर्वर/एप्लिकेशन प्रत्येक HTTP GET क्रिया और POST क्रिया अनुरोधों के लिए उल्लिखित प्रतिक्रिया शीर्षलेख भेजने के लिए कॉन्फ़िगर किया गया है। लेकिन क्या आपका वेब सर्वर HTTP विकल्प क्रिया को संभालने के लिए कॉन्फ़िगर किया गया है?

यदि आपको अधिक जानकारी चाहिए, तो कृपया आप जिस वेबसर्वर और एप्लिकेशन प्रोग्रामिंग तकनीक का उपयोग कर रहे हैं उसे प्रदान करें।

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

1): -

// इन विकल्पों अनुरोध कहा जाता है preflight अनुरोध आम तौर पर देव उपकरण उन्हें अपने नेटवर्क tab.f में ट्रैक

+1

आपकी टिप्पणी के लिए धन्यवाद। सर्वर आईआईएस 7 है। मैं विकल्प को संभालने के लिए इसे कैसे कॉन्फ़िगर कर सकता हूं? –

+0

एक अच्छी दिशा की तरह लगता है। क्या आप कृपया 'HTTP विकल्प' क्रिया को संभालने के तरीके के बारे में कुछ अनुशंसित लिंक प्रदान कर सकते हैं? – Blaise

+1

@ विकल्प विकल्प को संभालने के लिए सबसे कम स्पष्टीकरण http://stackoverflow.com/a/13646169/570239 में वेब एपीआई <2 और एएसपीएनटी एमवीसी कैसे करें इस बारे में अधिक जानकारी के लिए इस http: // www को जांचें .codeguru.com/csharp/.net/net_asp/उपयोग-क्रॉस-उत्पत्ति-संसाधन-साझाकरण-cors-in-asp.net-web-api.html। वेब एपीआई 2 के लिए http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api – humblelistener

7

2 समाधान सुझाव है कि न ब्राउज़र जरूरत विकल्प विधि कि सम्मेलन द्वारा की तरह दिखना चाहिए लागू करने के लिए:

public class XXXController : ApiController 
{ 
    // OPTION http-verb handler 
    public string OptionsXXX() 
    { 
     return null; // HTTP 200 response with empty body 
    } 

    ... 
} 

2) यदि आप हैं नहीं unde करने की कोशिश वेबएपीआई का उपयोग कर अपने कोड का कौन सा हिस्सा OPTION कॉल के लिए OPTIONS 405 (Method Not Allowed) त्रुटि को ट्रिगर करता है। उस मामले में मैं अगर Web.config फ़ाइल इन <customHeaders/> कि काम करता है के लिए जोड़ने की कोशिश कर की जाँच करेगा:

<configuration> 
    <system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <!-- CORS temporary solution --> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     <add name="Access-Control-Allow-Headers" value="Content-Type, Authorization, Accept, X-Requested-With" /> 
     <add name="Access-Control-Allow-Methods" value="OPTIONS, TRACE, GET, HEAD, POST, PUT" /> 
     </customHeaders> 
    </httpProtocol> 
    </system.webServer> 
</configuration> 
+0

क्षमा करें, लेकिन मुझे लगता है कि यह इस समस्या को ठीक नहीं कर सकता है। यह समस्या पैदा करने के अलावा कुछ और होना चाहिए। – Blaise

1

आप डिफ़ॉल्ट OPTIONSVerbHandler को संशोधित करने की आवश्यकता होगी।

<handlers> 
     <remove name="OPTIONSVerbHandler" /> 
     <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="IsapiModule" scriptProcessor="C:\Windows\System32\inetsrv\asp.dll" resourceType="Unspecified" requireAccess="None" /> 
    </handlers> 

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

  • कोई संबंधित समस्या नहीं^_^