我有一個基本的AngularJS服務設置像這樣:AngularJS:POST數據到外部REST API
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,但仍將發送OPTIONS作爲請求方法。
雖然Chrome開發工具會報告請求標題訪問控制請求方法:也發送POST(不知道這是否意味着什麼)。
問題二:我不斷收到一個錯誤與CORS,儘管有這些頭的API代碼設置:
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
此問題僅雖然顯示出來,如果做一個非GET請求。
處理這個問題的正確方法是什麼?我也研究過JSONP,但是由於這是一個RESTful API,我不確定如何解決只有GET支持的問題。
發送OPTIONS請求和POST請求的瀏覽器是我的問題所在。服務器未設置爲響應初始選項。儘管我不需要對x-xsrf-token做任何事情。使用這裏的代碼來處理所有必要的標題:http://stackoverflow.com/questions/13293157/backbone-slim-php-access-control-allow-headers-can-get-information-cant/13530329#13530329 –
這正是我的問題。謝謝。如果您使用node/express,請按照下面的「啓用預先飛行」說明獲取cors工作:https://github.com/troygoode/node-cors/ – JasonS