【发布时间】:2019-01-07 21:57:29
【问题描述】:
我是托管在 AWS S3 上的简单 javascript 网页的问题,该网页使用 ajax 向 AWS API Gateway 发出 HTTP POST。
我可以使用 curl 成功拨打电话:
curl -X POST -H "Content-Type: application/json" https://xxxx.execute-api.eu-west-1.amazonaws.com/dev/ankieta --data @data.json
data.json 文件:
{ "imie": "jasiu",
"ocena": "6",
"opinia": "niezle"
}
我的 javascript 代码如下所示。
<html>
<body>
<title>Ankieta</title>
<h1>Wypelnik ankiete</h1>
<button type="button" onclick="uruchom()">JSON</button>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
function uruchom() {
var resultDiv = $("#resultDivContainer");
var myData = {"imie": "Michal"};
$.ajax({
url: "https://xxxx.execute-api.eu-west-1.amazonaws.com/dev/ankieta",
type: "POST",
data: JSON.stringify(myData),
crossDomain: true,
contentType: "application/json",
dataType: 'jsonp',
headers: {
"Access-Control-Allow-Origin": "*"
},
success: function () {
alert("ok");
},
error: function() {
alert("zonk");
}
});
};
</script>
</body>
</html>
这是我从网络调试中得到的错误:
GET https://xxxx.execute-api.eu-west-1.amazonaws.com/dev/ankieta?callback=jQuery17203000220305941388_1546897907447&{%22imie%22:%22Michal%22}&_=1546897908872 net::ERR_ABORTED 400
看起来回调有问题,并且 URL 被我的正文数据更改。就我而言,我不想检查回调是否正常 - 只想简单地发布数据。
感谢您的任何建议。
【问题讨论】:
-
您遇到问题是因为您的服务器说您发送了错误的请求。您的 json 文件和 myData 变量不同,您确定没有丢失 curl 中显示的那两个参数吗?
-
我已经试过了。即使与 data.json 文件中的 myData 相同,也会出现相同的错误:(
-
Access-Control-Allow-Origin是回复标头,而不是请求标头。把它放在$.ajax是没有意义的。 -
您不能将
dataType: 'jsonp'与type: "POST"一起使用。
标签: javascript ajax amazon-s3 xmlhttprequest http-post