Javascript 如何配置S3 bucket以允许在没有405错误的情况下发布到API网关

Javascript 如何配置S3 bucket以允许在没有405错误的情况下发布到API网关,javascript,amazon-web-services,amazon-s3,aws-api-gateway,Javascript,Amazon Web Services,Amazon S3,Aws Api Gateway,我有一个静态网站上的AWS S3托管。该网站可从以下任一位置访问: 或 当用户完成表单和页面上的验证码并按submit时,会触发以下JavaScript: //将您的\u API\u端点\u URL替换为您的URL //它应该是这样的: // https://qw324asdasd.execute-api.us-east-1.amazonaws.com/dev/api/sendSms 常数API_https://fak3ur1.execute-api.us-east-1.amazonaws

我有一个静态网站上的AWS S3托管。该网站可从以下任一位置访问: 或

当用户完成表单和页面上的验证码并按submit时,会触发以下JavaScript:


//将您的\u API\u端点\u URL替换为您的URL
//它应该是这样的:
// https://qw324asdasd.execute-api.us-east-1.amazonaws.com/dev/api/sendSms
常数API_https://fak3ur1.execute-api.us-east-1.amazonaws.com/dev/api/sendSms';
var messageDiv=document.getElementById('error-message')
//处理公共api调用
document.getElementById('send-text')。addEventListener('click',function(){
const captchtaResponse=grecaptcha.getResponse()| | false
const textMessage=document.getElementById('message')。值
const phoneNumber=document.getElementById('phone-number')。值
如果(!textMessage){
messageDiv.innerHTML='记住输入消息!'
返回错误
}
如果(!电话号码){
messageDiv.innerHTML='别忘了输入电话号码!'
返回错误
}
如果(!captchtaResponse){
messageDiv.innerHTML='请完成验证码!'
返回错误
}
const data=JSON.stringify({
致:电话号码,
消息:textMessage,
验证码:验证码应答
})
//使用本机浏览器获取发布到API
const getdata=fetch(API_端点{
标题:{
“内容类型”:“应用程序/json”
},
方法:“POST”,
正文:数据,
模式:“cors”,
cache:false,
});
然后(函数(响应){
response.json().then(函数(数据){
console.log('响应:',数据);
const body=JSON.parse(data.body);
messageDiv.textContent='';
messageDiv.textContent=(body&&body.message)?body.message:“”;
});
}).catch(函数(err){
console.log(错误)
});
});
标记B是正确的

“听起来像是您通过JavaScript向API网关发布了一些内容,但同时也向S3发布了相同的内容?我猜您需要简单地防止默认的表单发布操作发生,因为您是通过JavaScript处理它的。”

编辑: 最简单的修复方法是更改此行:

document.getElementById('send-text').addEventListener('click', function () {
为此:

document.getElementById('send-text').addEventListener('click', function (event) {

并在下一行中调用
event.preventDefault()
,以防止默认代码运行并触发post请求。

我认为这太复杂了。听起来像是通过JavaScript向API网关发布了一些东西,但随后也向S3发布了相同的东西?我的猜测是,您需要简单地防止默认表单post操作发生,因为您是通过javascript处理它的。@MarkB您是对的!“防止默认设置或删除post操作”修复了此问题。@标记B如果您发布了答案,我将接受它。为了将来的访问者的利益,请编辑此答案,以准确显示您是如何修复表单以使其符合要求的。@Michael sqlbot已更新。