48

$http を使用すると、次のことができます。

var config = { headers: { 'something': 'anything' } };          
$http.get('url/to/json', config)
    .success(function() {
        // do something…
    })

私は $resource 参照で同じことをしたいです (動作していません):

var config = { headers: { 'something': 'anything' } };
MyResource.get( 
    config,
    function() { // success
        // do something…
    }
); 

次のように宣言された対応するサービスを使用します。

.factory('MyResource', function($resource){
    return $resource('url/to/json');
})

それは機能していません: 構成オブジェクトは、http ヘッダーではなく URL に移動します。

それを行う方法はありますか?

4

5 に答える 5

19

headersリソース アクション内のオブジェクトstaticは、そのフィールドの両方の値をサポートするだけでなくdynamic、関数から返される値もサポートします。

$resource('url/to/json', {}, {
        get: {
            method: 'GET',
            headers: { 
               'header_static': 'static_value',
               'header_dynamic': dynamicHeaderVal
            }
        }
});

function dynamicHeaderVal(requestConfig){
     // this function will be called every time the "get" action gets called
     // the result will be used as value for the header item
     // if it doesn't return a value, the key will not be present in the header
}
于 2015-03-27T22:48:00.397 に答える
15

デモコード

angular.module('Test',['ngResource'])
 .controller('corsCtrl', function ($scope, $http, MyResource) {

  $http.defaults.headers.common['test']= 'team'; //Using $http we can set header also
  MyResource.get();
})
.factory('MyResource', function($resource) {   //Services
  return $resource('url/to/json');
})

JsFiddle デモ

see in Request Header
于 2013-09-20T21:22:37.413 に答える
2

「Content-Type」ヘッダーを使用するには、少なくとも 1.4.7 以降のバージョンではデータ本体を指定する必要がある場合があります。これは、$http が === 'content-type' であるデータ本体のないヘッダーを削除するためです。1.4.7/angular.jsの #10255 を参照してください

データ本体を指定せずに、「data: false」を設定してスプーフィングします。

$resource('url/to/json', {}, {
    get: {
        method: 'GET',
        data: false,
        headers: { 'something': 'anything' }
    }
});
于 2015-12-03T04:05:27.623 に答える