2017-11-01 3 views
-2

最近、AWS GatewayでAPIを再構築して、すべてのラムダ関数をプロキシ統合AWS APIでCORSが有効になっていますが、「Access Control-Allow-Origin」がAngularで残っています

私は決してCORSに問題がありませんでした。トピックラインで説明した問題を解決するために過去数時間にわたっていくつか試してみました。

まず、プロキシリソースを使用してANYメソッドを使用しましたが、CORSの問題が発生したときにCORSをAPIメソッドで有効にしてもう一度試しました。だから、私は代わりに "POST"リクエストでCORSを有効にするように変更しようとしました - まだ何もありません。そして、すべての設定変更後に展開するようにしました。次に、私はプロキシを取り除き、代わりにCORSを有効にして "POST"メソッドを作成しました。

私はAngularのhttp postメソッドを使用しています。

編集:

私は角1.6.4を使用していて、これは私がAPIを呼び出すために使用しているコードです:

this.checkRegistered = function(email){ 
     var data = { Email : email}; 
     var toSend = JSON.stringify(data); 
     return $http.post('link', toSend); 
    }; 

角度モジュールのための私のサービスでだ、とこれは、コントローラでは、この関数から呼び出されています:私はすべてのパラメータを設定した

function CheckIsRegistered(email) 
    { 
     return userService.checkRegistered(email).then(function(res){ 
     if (res.data.statusCode === 200){ 
      return res.data.body; 
     }}); 
    } 

ように、「メール」、それは期待してどうあるべきかである、と私は実際のリンクを持つ単語「リンク」を置換しました。

私はコンソールを介してCORSを有効にすると、以下のように、私は、ヘッダーを割り当てる:

アクセス制御 - 許可 - ヘッダ「Content-Typeの、X-AMZ-日、認可、X-APIキー、 X-AMZ-セキュリティトークン」

アクセス制御 - 許可 - 起源: 『*』

私は今、実際に前にこの正確な問題に取り組んでかなり簡単にそれを解決しますが、しましたので、これは特に腹立たしいです私はラムダのプロキシ統合を使用していますが、私はこの問題に再び取り組みましたが、私はそれを理解しているようには思えません。

何か助けていただければ幸いです。

+1

返されたヘッダーを見ましたか?要求がなされたときに?それは予選ですか?プリフライトではない? –

+0

(1)どの角度の角度ですか? (2)要求ヘッダーと応答ヘッダーは何ですか? (3)関連するコードを表示できますか? – msanford

+0

これはあなたの問題を解決するものではありませんが、クライアント側からAWSと通信している場合、キーが公開されていることを意味しますか?悪いアイデア。 – jdmdevdotnet

答えて

0

問題を見つけました。私はCORSのヘッダーをラムダ応答に追加する必要がありました。

    connection.query('arbitrary query', [params], function (error, results, field) { 
      if (!error) 
      { 
       connection.end(); 
       var responseBody = results; 
       response = { statusCode: 200, 
       headers: { "Access-Control-Allow-Headers": "Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token", "Access-Control-Allow-Origin": "*"}, 
       body: JSON.stringify(responseBody)}; 
       callback(null, response); 
      } 

「レスポンス」のコンテキストのために、ここにクエリ行を挿入します。

関連する問題