Angular

时间:2015-12-11 07:08:37

标签: angularjs rest google-chrome jira-rest-api

我正在使用REST API调用来查询JIRA服务器中的所有未解决问题。以下是查询:

https://jiraserver/rest/api/2/search?jql=project IN ("Project Name") AND status  IN (open)

当我在Google Chrome高级REST客户端中传递查询时,我能够获得JSON响应但是当我在Angular.js中的HTTP调用中给出它时,它返回:

  

没有'Access-Control-Allow-Origin'标头错误。

我是Angular.js的新手,我无法识别出现了什么问题。有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

Access-Control-Allow-Origin

当服务器配置为不共享跨域请求的数据时,就会出现这种情况。

当我在Google Chrome高级休息客户端中传递查询时,我能够获得json响应

是的,所有其他客户端都可以访问数据,因为他们可以这样做,但对于ajax您应该启用CORS来共享数据跨域。

另一种方法是创建代理

可以做的是,在服务器上创建一个代理,然后可以调用另一个URL并获取数据并发送它。你可以这样做:

<?php 
    // suppose this page as "proxy.php"
    header('Content-Type: application/json');
    $jsonData = json_decode(file_get_contents('https://jiraserver/rest/api/2/search?jql=project'));
    echo $jsonData;
?>

然后在ajax中你可以使用ajax向这个文件发送请求:

$http({
  method: 'POST',
  url: '/proxy.php'
}).then(function successCallback(response) {
    console.log(response);
}, function errorCallback(response) {
    console.log(response);
});

答案 1 :(得分:-1)

自JIRA 6.0起,您可以为CORS配置白名单,请参阅JIRA-30371

  

自JIRA 6.0 for JIRA Server以来,JIRA REST API一直支持CORS。如果您是JIRA Server客户,只需转到&#34;白名单&#34; JIRA管理部分,并添加您希望从中请求资源的域。 注意:您必须拥有系统管理员全局权限才能访问JIRA管理的此部分。

     

很遗憾,出于安全原因,此域白名单在JIRA Cloud中不可用。我们目前正在探索允许某些不会将JIRA暴露给此攻击媒介的请求的替代方法。我们会在收到更多信息后立即更新此问题。

另请参阅:Configuring the Whitelist