【发布时间】:2019-03-18 17:27:40
【问题描述】:
场景: 我查询了一个 HTTP POST(使用 Authorizer 作为 Cognito 的 Header 参数)。 当我尝试获取/读取查询响应时,它会触发错误事件。但是,在浏览器中,我可以看到 2 个 HTTP POST 响应如何使用 200 个代码,其中一个返回有效响应。例如:如果我通过 POST 人发出请求,我会以一种很好的方式在 1 个响应中收到数据。
问题: 我无法打印结果,因为它使用无效的响应数据启动错误事件。
浏览器图片: https://i.postimg.cc/MTMsxZjw/Screenshot-1.png https://i.postimg.cc/3RstwMgv/Screenshot-2.png
Lambda 代码:
'use strict';
var AWS = require('aws-sdk'),
documentClient = new AWS.DynamoDB.DocumentClient();
exports.handler = function index(event, context, callback){
var params = {
TableName : "data-table"
};
documentClient.scan(params, function(err, data){
if(err){
callback(err, null);
}else{
console.log(JSON.stringify(data.Items));
callback(null, data.Items);
}
});
}
客户端 JS 代码:
function requestData(pickupLocation) {
$.ajax({
type: 'POST',
url: _config.api.invokeUrl,
headers: {
Authorization: authToken,
},
data: "{}",
cache: false,
success: completeRequest,
error: errorRequest
});
}
function completeRequest(response) {
alert("hello");
alert(response.d);
}
function errorRequest(response) {
alert("hello1");
alert(response.status + ' ' + response.statusText);
}
【问题讨论】:
-
能否请您分享非图片格式的回复详细信息?
-
CORS 策略已阻止从源“null”访问“https://***.execute-api.eu-west-1.amazonaws.com/prod/recurso”处的 XMLHttpRequest :请求的资源上不存在“Access-Control-Allow-Origin”标头。跨域读取阻止 (CORB) 阻止了具有 MIME 类型 application/json 的跨域响应 https://***.execute-api.eu-west-1.amazonaws.com/prod/recurso。更多详情请见chromestatus.com/feature***
-
这看起来您的 API 网关已禁用 CORS。我知道您提到它已启用,但您可以尝试再次启用它并将其保留为默认值,然后执行“部署 API”并查看它是否有效?
-
太棒了!它解决了这个问题。但这是一个诡计。当您启用 CORS 时,您必须添加 Access-Control-Allow-Origin*(它隐藏在高级选项中)
-
很高兴听到,我添加了评论作为答案,因此您可以将其标记为已解决(使用复选标记选项)
标签: amazon-web-services api lambda amazon-cognito