3

$http这是使用JSONP 函数的 JSONP 调用的基本设置

var authenticatedUrl = authenticateUrl("http://example.com/getStuff&callback=JSON_CALLBACK");
return $http.jsonp(authenticatedUrl).then(function (response) {
  ...
}

问题是,我的 HMAC 身份验证器正在创建一个基于 url 的哈希callback=JSON_CALLBACK,然后当 angular 发出实际请求时,URL 更改为angular.callbacks._0作为回调参数,这使我的身份验证哈希无效。

如何访问将用于此 JSONP 请求的真实 URL?

根据我的研究,拦截器似乎是解决这个问题的方法,但我似乎无法找到具有angular.callbacks._0回调的 URL 的对象。

4

1 回答 1

0

如果我理解正确,您正在使用Hawk - Single URI Authentication 之类的东西;这是您获得一个必须附加到 url 的令牌,并且该令牌对该确切的 url 有效。

您遇到的问题不是角度本身,而是每个 jsonp 框架应该工作的方式。

我会建议分叉JSONP以添加此行为或手动执行 JSONP。

var i = 0;
function call_endpoint(callback) {
    i++;
    var url = "http://example.com/getStuff&callback=callback_" + i;

    //append the token here, or call your endpoints to fetch the endpoint.

    window["callback_" + i] = function (data) {
      delete window["callback_" + i]; 
      callback(data);
    };

    script = document.createElement('script');
    script.src = url;

    var target = document.getElementsByTagName('script')[0] || document.head;
    target.parentNode.insertBefore(script, target);
}
于 2013-12-27T18:49:45.957 回答