/ / AJAX - 400 त्रुटि प्रीफ़्लाइट - jquery, ajax, cors

AJAX - 400 त्रुटि प्रीफ़्लाइट - jquery, ajax, cors

मेरे एप्लिकेशन में, मुझे निम्नलिखित दो-चरणीय कॉल करते समय दूसरी AJAX कॉल पर एक पूर्व-त्रुटि त्रुटि मिल रही है:

$.ajax({
type:"POST",
url:"https://podio.com/oauth/token",
data: {
"grant_type": "app",
"app_id": "#####",
"app_token": "#####",
"client_id": "#####",
"redirect_uri": "#####",
"client_secret": "#####"
}
}).done(function(response){
$.ajax({
type:"PUT",
contentType: "application/json",
headers: {"Authorization": "OAuth2 " + response.access_token},
url:"https://api.podio.com/item/1/value/142784383",
data: JSON.stringify({"values": "doofus@test.com"})
}).done(function(response){
console.log(response)
}).fail(function(error){
console.log(error)
})
})

क्रोम में त्रुटि (कोर टॉगल ब्राउज़र एक्सटेंशन के साथ) निम्नानुसार है:

jquery.min.js: 4 विकल्प https://api.podio.com/item/1 400 () test.html: 1 XMLHttpRequest लोड नहीं कर सकता https://api.podio.com/item/1/value/142784383। प्रीफ़्लाइट के लिए प्रतिक्रिया अमान्य HTTP स्थिति कोड 400 है

और सफारी लॉग

Failed to load resource: the server responded with a status of 403 (HTTP/2.0 403)

सन्दर्भ में https://api.podio.com/item/1/value/142784383

हालाँकि मैं "AJAX कॉल का उपयोग करता हूँ, यह बहुत पसंद हैअपने स्वयं के ऐप्स के लिए समय, मैं बाहरी एपीआई के साथ संलग्न होने की कुछ बारीकियों से थोड़ा अपरिचित हूं। इस समस्या के कारणों और समाधानों में कोई भी जानकारी बहुत सराहना की जाएगी।

उत्तर:

जवाब के लिए 2 № 1

मुझे लगता है कि आप सामग्री प्रकार को परिभाषित करते हैंआवेदन / json। इसके साथ बात यह है कि जब सामग्री प्रकार सरल पाठ / html (और कुछ अन्य) के अलावा कुछ भी है तो ब्राउज़र यह सुनिश्चित करने के लिए एक विकल्प भेजता है कि सर्वर सामग्री प्रकार की उम्मीद कर रहा है।

सर्वर को फिर हेडर के एक जोड़े को भेजना होगा। आप परिचित हो सकते हैं access-control-allow-origin: * लेकिन सर्वर को ब्राउज़र को यह भी बताना होगा कि हेडर किस क्षेत्र को स्वीकार करने को तैयार है। इसके लिए सर्वर को भेजने की आवश्यकता है

Access-Control-Request-Headers: Content-Type

यह ब्राउज़र को बताता है कि ग्राहक एक भेज सकता हैसामग्री वास्तविक अनुरोध में हेडर टाइप करती है। इसलिए आपको यह सुनिश्चित करने की आवश्यकता है कि सर्वर न केवल 200 को एक विकल्प अनुरोध पर स्वीकार कर रहा है और वापस लौट रहा है, बल्कि ऊपर वर्णित दो हेडर भी भेज रहा है।

आपकी टिप्पणी के जवाब में, आपको ग्राहक पर कुछ भी करने की आवश्यकता नहीं है। सर्वर को उन हेडर को भेजने की आवश्यकता है।

अधिक