TypeScript言語(フロントエンド側)とAWSとAPIゲートウェイ(バックエンド側)を使用して、角度4のWebアプリケーションを開発しています。 私は問題があります:APIゲートウェイは、完全に動作するデータ更新PUT要求で構成されています。 私は自分のアプリケーションでこのコードを使用する場合(ただし、私は(正しく書き込まれているように見える)、このメソッドを呼び出すと角度とAPIゲートウェイ:PUTメソッドを実装する方法は?
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要求は実行されません(correctUrl
は、正しいURLを参照する文字列です) JSONオブジェクトが完全に一致しています)、 コンソールに表示されます:Method PUT is not allowed by Access-Control-Allow-Methods in preflight response.
「CORSを有効にする」に進むと、PUT、GET、OPTIONSの3つのメソッドにチェックボックスがあります。 同じ方法でGETリクエストを呼び出すと、すべてが完全に機能しますが、PUTで同じことは起こりませんので、説明しません。
あなたはdevモードでアプリケーションを実行しますか?私はそれを構築し、それをサーバーに置くと、もう* cors *を有効にする必要はありません。 – Swoox
この "devモード"を有効にするには?とにかく、私はPUTで同じように起こっていないので、すべてが完全に動作する同じ方法で取得を呼び出す、私は説明していない! – claudioz
POSTで同じ事例で投稿することはできますか? preflightは主にOPTIONSが最初に送信されるヘッダーです。 – Swoox