我将尝试在AngularJS应用程序中向使用Serverless设置的Lambda函数发出HTTP请求。
以下是我的serverless.yaml函数:
创建客户函数
然而,我一直遇到这个错误:
预检请求的响应未能通过访问控制检查:所请求的资源上没有'Access-Control-Allow-Origin'标头。因此,来自 'http://localhost:5000' 的来源不被允许访问。响应的HTTP状态码为403。
我尝试在POST方法中启用API Gateway中的CORS,但结果并没有改变。
我还尝试在yaml文件中明确设置CORS。
以下是我的serverless.yaml函数:
functions:
createcustomer:
handler: handler.createcustomer
events:
- http: post /createcustomer
cors: true
创建客户函数
module.exports.createcustomer = (event, context, callback) => {
let customer = JSON.parse(event.body).customer;
service.create(customer, function(result) {
let response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Credentials": true,
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json",
},
body: JSON.stringify({
result: 'Created Customer Successfully',
message: 'The account has been created!',
type: 'success',
customer: result
})
};
callback(null, response);
});
};
我从我的AngularJS应用程序中这样调用它
app.factory('MyFactory', ['$http', function($http) {
return {
CreateCustomer: function(customer) {$http.post('<apipath>/createcustomer', {customer:customer})}
}
}]);
然而,我一直遇到这个错误:
预检请求的响应未能通过访问控制检查:所请求的资源上没有'Access-Control-Allow-Origin'标头。因此,来自 'http://localhost:5000' 的来源不被允许访问。响应的HTTP状态码为403。
我尝试在POST方法中启用API Gateway中的CORS,但结果并没有改变。
我还尝试在yaml文件中明确设置CORS。
functions:
createcustomer:
handler: handler.createcustomer
events:
- http: post /createcustomer
cors:
origin: '*'
仍然没有运气。
有人知道我做错了什么吗?
一个奇怪的事情是,我可以通过PostMan成功地获取帖子,但如果我尝试通过我的应用程序获取它,则会出现错误。
谢谢
更新
当我执行serverless deploy
时,它会在AWS中显示如上图所示,并且该方法看起来像这样。
如我之前所说,我尝试直接从API Gateway控制台启用CORS,但当我尝试调用该方法时并没有任何区别。