Angular和API Gateway:如何实现PUT方法?

时间:2017-09-12 09:34:14

标签: angular amazon-web-services typescript aws-api-gateway put

我正在使用TypeScript语言(前端端)和带有API网关的AWS(后端端)开发使用Angular 4的Web应用程序。 我有一个问题:API网关配置了一个完美的数据更新PUT请求。 如果我在我的应用程序中使用此代码(correctUrl是一个引用正确URL的字符串)

  putObject(myObject: MyObject) {
   if (this.authService.getAuthToken()) {
    let cognitoToken = this.authService.getAuthToken();
    let headers = new Headers({'Content-Type': 'application/json'}); 
    headers.append('Authorization', cognitoToken); //JWT token
    let url = correctUrl;

   return this.http.put(url, JSON.stringify(myObject) ,
          {headers})
      .map(data => data.json())
      .catch(this.handleError);
    } else {
        let errMsg = 'Error retrieving Authrization token from Cognito 
                      user session';
        console.error('error message: ' + errMsg);
        return Observable.throw(errMsg);
    }
  }

如果我调用此方法(似乎是正确编写的),则不会执行PUT请求(尽管JSON对象完全匹配)并且 它出现在控制台上:Method PUT is not allowed by Access-Control-Allow-Methods in preflight response. 这很奇怪,因为如果我去“启用CORS”,所有三种方法都有复选框:PUT,GET,OPTIONS(因为PUT有复选标记,我不明白这是什么错误。 我以同样的方式调用GET请求,一切都很完美,我不解释因为它与PUT不一样!

0 个答案:

没有答案