В вашей функции Lambda убедитесь, что вы возвращаете заголовок Access-Control-Allow-Origin
.
var response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin" : "*"
},
body: JSON.stringify({
someReturnData
})
};
callback(null, response);
Чтобы экстраполировать это немного больше, это из моего рабочего решения:
serverless.yml
functions:
ping:
handler: index.ping
events:
- http:
path: ping
method: post
cors:
origins:
- '*'
headers:
- Content-Type
- X-Amz-Date
- Authorization
- X-Api-Key
- X-Amz-Security-Token
allowCredentials: true
index.js (лямбда-функция)
'use strict';
module.exports.ping = (event, context, callback) => {
const response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin" : "*"
},
body: JSON.stringify({
message: 'Pong',
input: event,
}),
};
callback(null, response);
};
ping.controller.js (контроллер AngularJS)
$http({
method: 'POST',
url: config.apiRoot + '/ping',
headers: {
'Content-Type': 'application/json',
},
data: JSON.stringify(data)
}).then(
function successCallback () {
$scope.feedback = "Ping Success";
},
function errorCallback (response) {
$scope.feedback = "Ping Failed: " + JSON.stringify(response))
}
);