2017-06-12 11 views
5

का उपयोग कर AJAX में नहीं जा सकता है मैंने अपनी साइट के लिए दो प्रोजेक्ट का उपयोग किया है। एमवीसी परियोजना और एपीआई परियोजना के लिए एक। मैं web.config फ़ाइल जो एपीआई परियोजना में है में नीचे दिए गए कोड को शामिल किया है,हैडर क्रॉस डोमेन

Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET, POST, PUT, DELETE 
Access-Control-Allow-Headers: Authorization 

कार्रवाई विधि है जो नीचे के रूप में एपीआई परियोजना में है,

[HttpPost] 
[Route("api/ajaxapi/caselistmethod")] 
public List<CaseValues> AjaxCaseListMethod() 
{ 
      List<CaseValues> caseList = new List<CaseValues>(); 
      return caseList; 
} 

और ajax कॉल नीचे के रूप में जो MVC में है परियोजना,

$.ajax({ 
      type: "POST", 
      url: "http://localhost:55016/api/ajaxapi/caselistmethod", 
      beforeSend: function (request) { 
       request.setRequestHeader("Authorization", getCookie("Token")); 
      }, 
      success: function (response) { 
      } 
}); 

लेकिन अभी तक के रूप में नीचे दी गई त्रुटियां दिखा रहा है,

विकल्प http://localhost:55016/api/ajaxapi/caselistmethod 405 (विधि अनुमत नहीं है) XMLHttpRequest http://localhost:55016/api/ajaxapi/caselistmethod लोड नहीं कर सकता है। प्रीफलाइट के लिए प्रतिक्रिया में अवैध HTTP स्थिति कोड 405

है लेकिन हेडर के बिना यह ठीक काम कर रहा है। मुझे हेडर पास करने की भी आवश्यकता है। तो कृपया कोई सुझाव दें।

धन्यवाद ...

उत्तर

3

विकल्प विधि की जरूरत है "विकल्प" उड़ान-पूर्व अनुरोध सफल होने के लिए, जो बारी में प्राधिकरण हैडर भेजने के लिए आवश्यक के लिए सक्षम हो।

यह स्पष्ट नहीं है कि आप वेब में शीर्षलेख कैसे सक्षम कर रहे हैं। कॉनफिग या आप अपनी सेवा होस्ट करने के लिए क्या उपयोग कर रहे हैं, इसलिए सटीक समाधान का सुझाव देना मुश्किल है। यदि आप आईआईएस का उपयोग कर रहे हैं - enabling cross-origin resource sharing on IIS7 यह सुनिश्चित करने के लिए कि आईआईएस द्वारा विकल्प अवरुद्ध नहीं हैं। आपको मौजूदा हैंडलर को हटाने या विकल्प सक्षम करने की आवश्यकता हो सकती है।

वैकल्पिक रूप से आप उस मार्ग के लिए "विकल्प" सक्षम होने की अनुमति देने के लिए विधि पर EnableCors विशेषता का उपयोग कर सकते हैं।

+0

अंत में समाधान हो गया और आप अपने समय को बचाया .. धन्यवाद @Alexei –

1

क्रोम सीओआरएस हेडर देखने के लिए प्रीफलाइट अनुरोध (OPTIONS विधि) भेज देगा और फिर POST अनुरोध भेज देगा।

लेकिन आप OPTION विधियों की अनुमति नहीं दे रहे हैं।

प्रयास करें

Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS 
+1

मैं नहीं मानता कि 'पहुंच-नियंत्रण-अनुमति दें-Methods' प्रभावों 405 विकल्प ही अनुरोध कर से। आपको इस सूची में "विकल्प" जोड़ने की आवश्यकता नहीं है क्योंकि विकल्प क्रॉस-डोमेन कॉल करने की संभावना नहीं है (पूर्व-उड़ान विकल्प कॉल ब्राउज़र द्वारा "क्रॉस-डोमेन" नहीं माना जाता है क्योंकि यह ब्राउज़र द्वारा स्वयं बनाया जाता है और ग्राहक का कोड नहीं) –

+0

विकल्प विधि को अनुमति देने के बाद कुछ भी नहीं होता है। @ S.Dev –

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