我有一个Angular 1.4服务,它向MapQuest API发出$http.get()
请求。如果我直接将我的API密钥作为url的一部分传递,那么它可以工作但是如果我将它作为params
字段的一部分添加,那么它就不会。
工作:
var url = 'http://open.mapquestapi.com/geocoding/v1/address?key=Gmjtd%7Cluub2d08nh%2C2s%3Do5-2u2gh4';
$http.get(url);
// Key actually sent
Gmjtd%7Cluub2d08nh%2C2s%3Do5-2u2gh4
不工作:
var url = 'http://open.mapquestapi.com/geocoding/v1/address';
$http.get(url, {
params: {
key: 'Gmjtd%7Cluub2d08nh%2C2s%3Do5-2u2gh4'
}
});
// Key actually sent
Gmjtd%257Cluub2d08nh%252C2s%253Do5-su2gh4
不工作:
var url = 'http://open.mapquestapi.com/geocoding/v1/address';
$http.get(url, {
params: {
key: encodeURIComponent('Gmjtd%7Cluub2d08nh%2C2s%3Do5-2u2gh4');
}
});
// Key actually sent
Gmjtd%25257Cluub2d08nh%25252C2s%25253Do5-2u2gh4
似乎在params
字段中传递密钥会导致它经历某种编码过程,导致其无效。
使用params
方法时,如何维护原始密钥?
答案 0 :(得分:1)
Angular确实encode params。您应该拨打decodeURIComponent
,因为该密钥已经过编码。
$http.get(url, {
params: {
key: decodeURIComponent('Gmjtd%7Cluub2d08nh%2C2s%3Do5-2u2gh4');
}
});