2017-05-15 38 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,選項 訪問控制 - 允許標題:授權。