以下是使用$http
的JSONP函数进行JSONP调用的基本设置
var authenticatedUrl = authenticateUrl("http://example.com/getStuff&callback=JSON_CALLBACK");
return $http.jsonp(authenticatedUrl).then(function (response) {
...
}
问题是,我的HMAC身份验证器正在使用callback=JSON_CALLBACK
创建基于url的哈希值,然后在angular发出实际请求时,URL会更改为angular.callbacks._0
作为回调参数,这使我的身份验证哈希无效。
如何访问将用于此JSONP请求的真实网址?
从我的研究中看来,拦截器似乎是这样的,但我似乎找不到具有angular.callbacks._0
回调的URL的对象。
答案 0 :(得分:0)
如果我理解正确,您使用的是Hawk - Single URI Authentication;这是你得到一个你必须附加到网址的令牌,而令牌对于那个确切的网址是有效的。
你遇到的问题,不是角度本身,而是每个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);
}