2015-08-24 35 views
1

我正嘗試將我的Angular應用連接到Bluemix QA API。所以我有這個代碼。AngularJs和Bluemix QA API無法發出發佈請求

$http({ 
     method: 'POST', 
     url: 'https://gateway.watsonplatform.net/question-and-answer-beta/api/v1/question/healthcare', 
     headers: { 
      'Content-Type': 'application/json', 
      'Authorization':'Basic mytoken', 
      'X-SyncTimeout': 30 
     }, 
     data: { 
      'question': { 
       'questionText': 'Malaria?' 
      } 
     } 
    }).then(function(response){ 
     $scope.response = JSON.stringify(response); 
    }); 

我也有這個在我的app.js

.config([ 
'$routeProvider', 
'$httpProvider', 
function($routeProvider, $httpProvider){ 
    $httpProvider.defaults.headers.common['Access-Control-Allow-Origin'] = '*'; 
    $httpProvider.defaults.headers.common['Access-Control-Allow-Headers'] = '*'; 

}]) 

但是當我嘗試運行的方法,我得到這個錯誤:

Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers. 

如果我嘗試刪除標題會在另一個標題中給我一個問題。那麼,有什麼想法?或者任何ajax例子?我知道有幾個nodejs示例,但我想知道是否可以直接連接到api。

回答

1

你正在得到這個,因爲你正在嘗試執行跨站點腳本。沃森不支持這一點。您需要將請求代理到應用程序的後端,然後讓您的應用程序將請求彙集到Watson。

例如,這裏是an app,它與Personality Insights一起工作,將Angular的請求彙集到後端,然後再到Watson。

+0

爲什麼相同的請求在Postman上工作? –

+0

Postman是Chrome的瀏覽器插件,允許您創建REST請求。但是,如果您想要通過HTML和Javascript中的Web瀏覽器發出REST請求,您需要代理這些請求。有關更多信息,請查閱https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS。 –

+0

@JavierSuazo你能接受答案嗎? –