Angularjs 否';访问控制允许原点';有角度的收割台

Angularjs 否';访问控制允许原点';有角度的收割台,angularjs,rest,google-chrome,jira-rest-api,Angularjs,Rest,Google Chrome,Jira Rest Api,我使用RESTAPI调用来查询JIRA服务器中所有未解决的问题。以下是查询: https://jiraserver/rest/api/2/search?jql=project IN ("Project Name") AND status IN (open) 当我在Google Chrome advanced REST client中传递查询时,我能够得到JSON响应,但当我在Angular.js中的HTTP调用中给出此响应时,它返回: 没有“访问控制允许来源”标题错误 我是Angular.j

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

https://jiraserver/rest/api/2/search?jql=project IN ("Project Name") AND status  IN (open)
当我在Google Chrome advanced REST client中传递查询时,我能够得到JSON响应,但当我在Angular.js中的HTTP调用中给出此响应时,它返回:

没有“访问控制允许来源”标题错误

我是Angular.js新手,无法识别出哪里出了问题。有人能帮我吗?

访问控制允许来源
当服务器配置为不共享跨域请求的数据时,就会出现这种情况

当我在GoogleChromeAdvancedRESTClient中传递查询时,我能够得到一个json响应

是的,所有rest客户端都可以访问数据,因为它们被允许这样做,但是对于
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;
?>

由于JIRA 6.0,您可以为配置白名单,请参阅:

自JIRA服务器的JIRA 6.0以来,JIRA REST API就支持CORS。如果您是JIRA服务器客户,只需转到JIRA管理的“白名单”部分,添加您希望从中请求资源的域注意:您必须具有系统管理员全局权限才能访问JIRA管理的此部分

不幸的是,出于安全原因,此域白名单在JIRA云中不可用。我们目前正在探索替代方法,允许某些请求不会将JIRA暴露于攻击向量。一旦我们有更多信息,我会尽快更新这个问题


另请参见:

我在apache tomcat服务器上本地托管了一个html/angular应用程序。我试图通过http调用访问RESTAPI。我在tomcat web.xml CorsFilter org.apache.catalina.filters.CorsFilter CorsFilter/*中执行了以下操作,但同样的错误再次出现
$http({
  method: 'POST',
  url: '/proxy.php'
}).then(function successCallback(response) {
    console.log(response);
}, function errorCallback(response) {
    console.log(response);
});