【问题标题】:AWS API Gateway Lambda function works with Postman but not with jqueryAWS API Gateway Lambda 函数适用于 Postman 但不适用于 jquery
【发布时间】:2018-01-16 21:37:46
【问题描述】:

我有一个 lambda(节点)函数,当我使用 postman 调用它时可以正常工作,但当我使用 jquery $.ajax 时却不行。

正在使用 javascript/jquery 从本地 html 页面调用该函数。

我启用了 'Allow-Control-Allow-Origin' chrome 插件。

请求使用 possman 和 jQuery 传递相同的 json 对象。

{   
    "deviceid" : "ZZ-5A-04-A6-XX-YY"
}

我尝试了以下网关请求映射模板。

  1. $input.json('$')

    当我记录偶数节点对象时,我看到以下行

    deviceid=ZZ-5A-04-A6-XX-YY
    
  2. $input.body

    我得到错误:

    无法将请求正文解析为 json:无法识别的令牌

【问题讨论】:

  • 您的 jQuery.ajax 请求是什么样的?您是否传递了 Content-Type: application/json 标头?
  • 如何使用 Lambda 代理集成?这要简单得多。切换不会立即解决您的问题,但会更容易维护和排除故障。
  • var hardobj = { "deviceid": "ADKNDND" }; $.ajax({ type: 'POST', url: API_URL, data: hardobj, dataType: 'json', headers: { 'Access-Control-Allow-Origin' : '*', 'Access-Control-Allow-Headers ':'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token', 'Access-Control-Allow-Credentials' : true, 'Content-Type': 'application /json' }, crossDomain: true, success: function (data) {getdatasuccess(data)}, error: function(data){ console.log("error = "+JSON.stringify(data)); } });

标签: amazon-web-services aws-lambda aws-api-gateway


【解决方案1】:

终于解决了。 除了使用 chrome 允许跨源插件之外,在使用 jquery ajax 时还需要将数据对象作为字符串发送。

数据:JSON.stringify(hardobj)

希望其他人不必浪费一周的时间来解决这个问题。

【讨论】:

    猜你喜欢
    • 2023-02-14
    • 2020-10-05
    • 2019-09-05
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    相关资源
    最近更新 更多