Cómo especificar el parámetro de encabezados para una acción Angular $ resource personalizada

Lo siguiente funciona bien, pero estoy pensando que esto modifica $ httpProvider a nivel mundial, que no es lo que quiero.

angular.module('SessionService', ['ngResource']) .config(function($httpProvider){ $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8' }) .factory('Login', function($resource){ var resource = $resource('/adminui/login',{},{ post:{ method:"POST", isArray:false }, }); return resource; }) LoginCtrl = function($scope,Login) { $scope.login = function(){ Login.post($.param({user:$scope.user.username,password:$scope.user.password}),$.noop,$.noop) } } 

¿Hay alguna forma de hacer esto en su lugar?

 ... .factory('Login', function($resource){ var resource = $resource('/adminui/login',{},{ post:{ method:"POST", isArray:false, headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'} // ignored }, }); return resource; }) 

El parámetro “encabezados” parece ser ignorado. la solicitud todavía está

Content-Type:application/json;charset=UTF-8

¿Está mi valor para los encabezados bien?

He confirmado que 1.1.3 sí lo admite. Sin embargo, debe asegurarse de obtener también la versión 1.1.3 del servicio de recursos. Una prueba rápida de:

 angular.module('myApp', ['ngResource']). config(['$routeProvider', function($routeProvider) { $routeProvider.when('/', {templateUrl: 'partials/partial1.html',controller: 'MyController'}); $routeProvider.otherwise({redirectTo: '/'}); }]) .controller("MyController", function( $scope, Bug) { Bug.post({test:"test"}); }) .factory('Bug', function($resource){ var resource = $resource('/bug',{},{ post:{ method:"POST", isArray:false, headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'} }, }); return resource; }); 

Esto hará una solicitud con los encabezados configurados en (confirmado mediante Chrome):

 Content-Type:application/x-www-form-urlencoded; charset=UTF-8 

Una nota rápida, no pude encontrar una descarga de angular-resource.js, así que tuve que ir al sitio web github para descargarlo. Está aquí .

Para algunas risitas, creé un violín. Tenga en cuenta que habrá una llamada POST fallida, pero sus encabezados están configurados correctamente. Ejemplo Fiddle

Si bien los documentos de desarrollo (a partir del 12 de octubre) muestran que es posible anular los encabezados en $ recurso, aún no se ha liberado (v1.0.2 o v1.1.0). Sin embargo, la característica está en las twigs v1.0.x y master. Para poder acceder a esa característica, puede considerar construir desde la twig v1.0.x por el momento.

Cómo construir: http://docs.angularjs.org/#H1_4

Alternativamente, puede extraer de la comstackción de instantáneas: http://code.angularjs.org/snapshot/

Parece que esta característica estará en la próxima versión.

Simplemente agregando el enlace a los archivos de recursos 1.1.5 (y otros): http://code.angularjs.org/1.1.5/

Puede configurar la URL para que coincida con la versión que está buscando.
ej. 1.1.4: http://code.angularjs.org/1.1.4/