我正在尝试在前端使用Bing图像搜索API。它适用于Node.js的后端,如下所示:
router.get('/image_search', function (req, res, next) {
request.get({
url: 'https://api.datamarket.azure.com/Bing/Search/v1/Image?Query=%27hellow%27&$format=json',
headers: {
'User-Agent': 'request'
},
json:true,
auth:{
user: Config.bing.accKey,
pass: Config.bing.accKey //identical to user val
}
}, function (err, resp, body) {
if (err) {
log.error(err);
log.info(body);
}
else {
log.info(body);
res.json({success: body});
}
});
});
但在前端,我遇到了奇怪的CORS问题:
阻止跨源请求:同源策略禁止读取 远程资源在 https://api.datamarket.azure.com/Bing/Search/v1/Image?Query=%27hellow%27。 (原因:CORS标题'Access-Control-Allow-Origin'不匹配 '*')。
但是使用通配符,微软是不是会出错?似乎他们想允许任何人使用API,但实际上不允许使用通配符(我一直在那里)。所以看起来MS的一些开发人员犯了一个错误。
无论如何,这是我在前端(Angular)上的内容:
bingSearch: function(query){
var url = 'https://api.datamarket.azure.com/Bing/Search/v1/Image?Query=%27hellow%27';
return $http({
url: url,
method: 'GET',
headers: {
'Authorization': 'Basic ' + ConfigService.bing.accKey,
'User-Agent':'request'
}
}).then(function(data){
console.log(data);
}).catch(function(data){
console.error(data);
});
},
我得到了CORS响应,这很奇怪..