2017-03-27 118 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头的响应头。只有当浏览器在响应中看到该标题时才会发送实际请求