AWS API网关Lambda函数适用于Postman,但不适用于jquery
问题描述:
我有一个lambda(节点)函数,当我使用邮递员调用它时可以正常工作,但不是当我使用jquery $.ajax
时。AWS API网关Lambda函数适用于Postman,但不适用于jquery
该函数正在使用javascript/jquery从本地html页面调用。
我有'Allow-Control-Allow-Origin'chrome插件启用。
该请求使用possman和jQuery传递相同的json对象。
{
"deviceid" : "ZZ-5A-04-A6-XX-YY"
}
我尝试了以下网关请求映射模板。
-
$input.json('$')
当我登录偶数节点对象我看到以下行
deviceid=ZZ-5A-04-A6-XX-YY
-
$input.body
我得到的错误:
Could not parse request body into json: Unrecognized token
答
终于解决了。 除了使用chrome允许交叉原点插件外,当使用jquery ajax时,数据对象需要作为字符串发送。
数据:JSON.stringify(hardobj)
希望别人没有一个星期浪费试图找出这一个。
你的jQuery.ajax请求是什么样的?你传递一个'Content-Type:application/json'头文件吗? – fubar
如何使用Lambda Proxy集成?它更简单。切换不会立即解决您的问题,但它会更容易维护和排除故障。 – dashmug
var hardobj = { \t \t“deviceid”:“ADKNDND” \t}; \t $就({ \t类型: 'POST', \t网址:API_URL, \t数据:hardobj, \t数据类型: 'JSON', \t标头:{ \t \t“访问控制 - 允许 - 'Origin':'*', 'Access-Control-Allow-Headers':'内容类型,X-Amz-Date,授权,X-Api-Key,X-Amz-Security-Token', 'Access- Control-Allow-Credentials':true, 'Content-Type':'application/json' \t}, \t crossDomain:true, \t success:function(data){getdatasuccess(data)}, \t error:function(data){ \t console.log(“error =”+ JSON.stringify(data)); \t} \t}); – user2324723