Во-первых, я знаю, что этот вопрос задавался несколько раз. Я пробовал много опубликованных решений, и у меня ничего не работает.
Вот еще несколько мест, где об этом спрашивали:
- Как указать параметр заголовков для пользовательского действия Angular $resource< /а>
- Как отправить данные в виде данных формы, а не полезной нагрузки запроса?
- Настройка HTTP-заголовков приложения в AngularJS
- https://groups.google.com/forum/#!msg/angular/Mtsf-YdwwWo/P_Ui4t_DiXkJ
Попытки:
var app = angular.module('theApp', ['app.services']);
app
.config(['$httpProvider', function ($httpProvider) {
// Try (1): This doesn't work
$httpProvider.defaults.headers.common['Content-Type'] = 'application/json;charset=utf-8';
// Try (2): This doesn't work either
$httpProvider.defaults.headers.post['Content-Type'] = 'application/json;charset=utf-8';
}])
angular.module('app.services', ['ngResource'])
// Resource for Drupal system/connect.post API (via services.module)
.factory('SystemConnect', function($resource, $http) {
// Try (3): There's no way this should work. But what the hell let's try!
$http.defaults.headers.common['Content-Type'] = 'application/json;charset=utf-8';
$http.defaults.headers.post['Content-Type'] = 'application/json;charset=utf-8';
return $resource('api/system/connect.json', {}, {
post: {
method: 'POST',
params: { },
isArray: true,
// Try (4): This doesn't work either
headers: { 'Content-Type': 'application/json;charset=utf-8' }
}
});
});
function SomeCtrl($scope, SystemConnect) {
// FAIL, this results in "406 Not Acceptable: Unsupported content type application/xml"
$scope.user = SystemConnect.post();
}
app.controller('SomeCtrl', SomeCtrl);
Похоже, что многие люди уже решали это раньше. Может ли кто-нибудь любезно сообщить мне правильный способ сделать это?
PS: Как ни странно, при запуске этого кода в Firefox Angular использует «Content-Type: text/plain» для POST!?
$scope.user = SystemConnect.post({});
работает, совершенно странно. Поместите это в ответ. - person James Andres   schedule 08.05.2013