我想从一个特定请求中删除一些$http
请求标头字段(这意味着不在$httpProvider
级别)。这些字段是:
如何在单个请求中执行此操作?我尝试使用transformRequest
参数,但没有找到足够的信息来使其工作。这样的[CoffeeScript]代码:
$scope.logout = ->
$http({
method: 'GET'
url: '/api/logout'
headers: { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' }
transformRequest: (data, headersGetter) ->
console.log data
console.log headersGetter
data
}).success ->
$location.path('editor')
表明data
是undefined
,headersGetter是function (c){a||(a=Nb(b));return c?a[y(c)]||null:a}
(我绝对没有告诉我),我不明白从transformRequest函数返回什么。
答案 0 :(得分:7)
如果你使用Angular的非限制版本,当异常发生时你会得到更好的回溯,你可以更容易地反省角度代码。我个人在开发时推荐它。这是headersGetter
实际上的样子:
function (name) {
if (!headersObj) headersObj = parseHeaders(headers);
if (name) {
return headersObj[lowercase(name)] || null;
}
return headersObj;
}
除非您正在发布一些数据,否则您的变换器的data
参数将是未定义的。
headersGetter
函数采用可选参数name
,如果您想获得单个标题,但省略了设置标题的参数:
headersGetter()['Cache-Control'] = 'no-cache';
headersGetter()['X-Requested-With'] = '';
变压器的返回值应该是您要使用的data
的值。