2017-05-15 39 views
0

我尝试从redmine通过它们获取问题Rest Api。当我把它从邮差,我得到响应,但是当我从我的角度应用程序做到这一点,我得到这样的错误Angular 2 access redmine Rest Api,no'Access-Control-Allow-Origin'

OPTIONS https://redmine.ourDomain.net/issues.json 404(未找到) 的XMLHttpRequest无法加载https://redmine.ourDomain.net/issues.json。对预检请求的响应不会通过访问控制检查:请求的资源上不存在“访问控制 - 允许来源”标头。因此不允许访问原产地'http://localhost:3000'。响应有HTTP状态代码404

它我如何做到这一点的角度

login(user: User): Observable<boolean> { 
    var headers: Headers = new Headers(); 
    headers.append("Authorization", "Basic " + btoa(user.login + ":" + user.password)); 
    let options = new RequestOptions({ headers: headers }); 
    return this.http.get("https://redmine.ourDomain.net/issues.json", options) 
     .map((response: Response) => { 
      debugger; 
      if (response.status == 200) { 
       // set token property 

       // store username and jwt token in local storage to keep user logged in between page refreshes 
       localStorage.setItem('currentUser', JSON.stringify({ user })); 

       // return true to indicate successful login 
       return true; 
      } else { 
       // return false to indicate failed login 
       return false; 
      } 
     }); 
} 

而且 enter image description here

+1

请参阅:http://stackoverflow.com/questions/20035101/no-access-control-allow-origin-header-is-present-on-the-requested-resource –

+0

我启用了CORS的铬,但现在我得到这样的错误**预检的响应具有无效的HTTP状态码404 ** – Stefan

回答

1

你需要有怎样的要求看在我的浏览器中启用CORS访问在后端:http://www.redmine.org/plugins/redmine_cors

这是一个很好的扩展,它可以让你测试正常CORS限制之外的前端代码。这是严格的测试,并不会帮助生产应用程序,但很好有:https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

+0

我只是使用此扩展名,但仍然收到错误**预检的响应具有无效的HTTP状态码404 ** – Stefan

+1

此扩展名仅适用于前端CORS限制由浏览器强制执行。您需要配置您的后端以允许CORS,或者配置头文件与后端将接受的请求一起发送。 – joh04667

+0

但我不知道他们想要哪些标题,我无法将此链接发布到您发布的页面。 – Stefan

1

CORS必须在后端设置。请注意,允许所有来源访问控制 - 允许来源:'*'并不是一个好习惯,您还需要指定其他标题:

访问控制 - 允许 - 方法:GET,选项 访问控制 - 允许标题:授权。