bir temel angularjs hizmet kurulumu şöyle var:angularjs: POST Veri Dış REST API için
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'
}
}
});
});
ve ben bu gibi kullanmak:
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);
});
Sorun tek: User.update(), POST olarak ayarlanan yönteme rağmen, istek yöntemi olarak OPTIONS göndermeye devam eder.
Chrome Dev araçları, istek başlığı Erişim Denetimi-İstek Yöntemi'ni rapor etmesine rağmen, POST da gönderilir (Bunun herhangi bir anlama gelip gelmediğinden emin olun).
Sorun iki: API kodunda belirlenen bu başlıkları olmasına rağmen, CORS bir hata almaya devam:
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
Bu sorun yalnızca olsa gösterir olmayan bir GET isteği yapan eğer.
Bunu işlemenin doğru yolu nedir? JSONP'a da baktım, ama bu RESTful api ile, sadece GET desteği ile sorunların nasıl giderileceğinden emin değilim.
OPTIONS isteğini gönderen tarayıcı daha sonra POST isteğim benim sorunumdu. Sunucu, ilk OPTIONS'a yanıt vermek üzere ayarlanmamış. Yine de x-xsrf-token ile bir şey yapmam gerekmedi. Gerekli tüm başlıkları ele almak için kodu buradan kullanın: http://stackoverflow.com/questions/13293157/backbone-slim-php-access-control-allow-headers-can-get-information-cant/13530329#13530329 –
Bu tam olarak benim sorunumdu. teşekkür ederim. Düğüm/express kullanırsanız, korsanın çalışmasını sağlamak için "uçuş öncesi etkinleştir" talimatlarını izleyin: https://github.com/troygoode/node-cors/ – JasonS