AWS API GATEWAY <=> AWS Lambda CORS проблема - PullRequest
0 голосов
/ 29 января 2020

Это мой первый раз с AWS, я настроил таблицу DynamoDB, а также создал лямбда-функции для выполнения CRUD-операций, сначала я сделал функции stati c. Затем я приступил к созданию методов API Gateway для динамического доступа к функциям Lambda.

Метод, который я пытаюсь вызвать, является методом GET, его следует вызывать с использованием JS и из другого домена, который мне нужен. чтобы включить CORS, к сожалению, даже после того, как он у меня есть в заголовке моей лямбда-функции, он дает мне ошибку CORS:

'use strict';
const AWS = require('aws-sdk');

AWS.config.update({ region: 'us-east-2' });

exports.handler = async (event, context) => {
    const ddb = new AWS.DynamoDB({ apiVersion: '2012-10-08' });
    const documentClient = new AWS.DynamoDB.DocumentClient({ region: 'us-east-2' });
    let responseBody = "";
    let statusCode = 0;

    var params = {
    TableName: "Users",
  };

  // scan is a function, that is like the SELECT .. WHERE .. clause in SQL
    try{
        const data = await documentClient.scan(params).promise();
        responseBody = JSON.stringify(data.Items);
        statusCode = 200;
    }catch(err) {
        responseBody = `Unable to Scan Users, error: ${err}`;
        statusCode = 403;
    }

    const response = {
        statusCode: statusCode,
        headers: {
            "access-control-allow-origin": "*"
        },
        body: {
            responseBody
        }
    };

    return response;
};

Это код, который у меня есть в VueJS приложении, которое должно сделать запрос метод GET в API Gateway:

try{
  const res = await axios.get("https://here-goes-my-url");
  console.log(res.data);
} catch (err){
  console.log(err);
}

Вот ошибка, которую я получаю:

Access to XMLHttpRequest at 'https://here-goes-the-url' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Лямбда-метод GET должен возвращать все элементы в таблице «Пользователи». Пожалуйста, помогите, спасибо!

1 Ответ

0 голосов
/ 29 января 2020

Хорошо, у вас установлен заголовок.

Включили ли вы cors из API-шлюза?

enter image description here

И когда вы видите ошибки CORS, они не всегда связаны с CORS в случае AWS лямбда, так как иногда ответ блокируется API Шлюз и клиент все еще получают ошибку CORS. Я думаю, что это сделано для того, чтобы его было сложнее взломать, поскольку ошибки полезны, если вы пытаетесь взломать сервер.

Поэтому я настоятельно рекомендую вам сначала протестировать приложение в консоли API Gateway.

enter image description here

enter image description here

Это даст вам более действенную ошибку. Я предполагаю, что это может быть связано с разрешениями. Надеюсь это поможет.

...