2017-03-27 155 views
0

我正在嘗試調用API。我用POSTMAN測試了這個調用,它工作正常,但是當我嘗試使用Angular 2 HTTP時,我得到一個錯誤。Angular 2 Http獲取身份驗證

以下是錯誤:選項[URL] 405(方法不允許)。我在本地主機上使用我的測試服務器連接到另一臺服務器上的API。服務器具有訪問控制允許來源。

這是我的代碼。

getAllAlerts(){ 
     let headers = new Headers({'authorization':'Bearer ACCESSTOKEN'}), 
      options = new RequestOptions({headers: headers}); 

     return this.http.get(this.mentionUrl,options).map((resp) => resp.json()); 
    } 

當我看着我在Chrome請求方法網(標籤)上更改爲選項和狀態代碼爲405不允許的方法。

回答

0

在您的API上,您還必須指定允許的方法和標頭。

所以,例如,使用Rails和機架:: CORS寶石時,配置是這樣的:以上

# configure rails to allow CORS from all sources 
    config.middleware.insert_before 0, "Rack::Cors" do 
     allow do 
     origins '*' 
     resource '*', :headers => :any, :methods => [:get, :post, :options] 
     end 
    end 

配置的Rails允許方法CORS請求:GET,POST和OPTIONS。

由於CORS的工作原理,OPTIONS是必需的 - 無論何時你做一個交叉源請求,瀏覽器首先嚐試一個OPTIONS請求並檢查Access-Control-Allow-Origin頭的響應頭。只有當瀏覽器在響應中看到該標題時纔會發送實際請求