मैं बहुत की तरह एक बुनियादी AngularJS सेवा सेटअप:AngularJS: पोस्ट डाटा बाहरी बाकी एपीआई के
app.factory('User', function($resource) {
return $resource('http://api.mysite.com/user/:action:id/:attr', {}, {
history: {
method: 'GET',
params: {
attr: 'history'
}
},
update: {
method: 'POST',
params: {
name: 'test'
}
}
});
});
और मैं इसे इस तरह का उपयोग करें:
User.history({id: 'testID'}, function(data) {
console.log('got history');
console.log(data);
});
User.update({id: 'me'}, function(data) {
console.log('updated');
console.log(data);
});
समस्या एक: User.update(), POST पर विधि सेट होने के बावजूद, अनुरोध विधि के रूप में विकल्प भेजना जारी रखता है।
हालांकि क्रोम देव उपकरण अनुरोध शीर्षलेख की रिपोर्ट करता है एक्सेस-कंट्रोल-अनुरोध-विधि: पोस्ट भी भेजा जाता है (सुनिश्चित नहीं है कि इसका मतलब कुछ भी है)।
समस्या दो: मैं CORS के साथ एक त्रुटि प्राप्त हो रही इन हेडर एपीआई कोड में सेट होने के बावजूद:
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
इस समस्या को केवल हालांकि पता चलता है एक गैर प्राप्त अनुरोध करने वाले हैं।
इसे संभालने का उचित तरीका क्या है? मैंने जेएसओएनपी में भी देखा है, लेकिन यह एक अत्याधुनिक एपीआई है, मुझे यकीन नहीं है कि केवल जीईटी समर्थन के साथ समस्याओं को कैसे प्राप्त किया जाए।
ब्राउजर विकल्प अनुरोध भेज रहा है तो POST अनुरोध था जहां मेरी समस्या थी। शुरुआती विकल्प का जवाब देने के लिए सर्वर स्थापित नहीं किया गया था। हालांकि मुझे x-xsrf-token के साथ कुछ भी करने की आवश्यकता नहीं थी। सभी आवश्यक शीर्षलेखों को संभालने के लिए यहां से कोड का उपयोग किया गया: http://stackoverflow.com/questions/13293157/backbone-slim-php-access-control-allow-headers-can-get-information-cant/13530329#13530329 –
यह वास्तव में मेरी समस्या थी। धन्यवाद। यदि आप नोड/एक्सप्रेस का उपयोग करते हैं, तो कॉर्स काम करने के लिए यहां "प्री-फ्लाइट सक्षम करें" निर्देशों का पालन करें: https://github.com/troygoode/node-cors/ – JasonS