AWS S3 Bucket突然响应403 Forbidden的POST请求

时间:2018-05-28 22:06:26

标签: amazon-web-services amazon-s3

我有一个包含我的投资组合的网站,该网站托管在AWS S3 Bucket中。它过去工作正常,但突然联系我部分停止工作。

我有一个javascript文件,contact_me.js指的是一个php文件,contact_me.php。当我尝试点击“发送”向我的电子邮件地址发送邮件时,我收到错误

“mail / contact_me.php:1无法加载资源:服务器响应状态为403(禁止)”

当我在浏览器中导航到路径时,我会下载文件,所以我似乎可以访问它。

我在尝试更改AWS中的权限时也遇到了此错误,但无济于事:

jquery.min.js:4
POST http://ReplacedWithDummySite/mail/contact_me.php 403 (Forbidden)
send @ jquery.min.js:4
ajax @ jquery.min.js:4
submitSuccess @ contact_me.js:21
(anonymous) @ jqBootstrapValidation.js:76
dispatch @ jquery.min.js:3
r.handle @ jquery.min.js:3

出错的地方是:“g.send(b.hasContent&& b.data || null)”

我没有做任何事情要打破它:过去工作得很好。我已经检查了存储桶权限,因为显而易见的是权限不公开。我已将所有内容设置为公开,并具有以下存储桶策略:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "AllowPublicRead",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::aws-website-dummyarn/*"
    }
 ]
}

1 个答案:

答案 0 :(得分:0)

  

我有一个javascript文件,contact_me.js引用了一个php文件,contact_me.php。当我尝试点击"发送"发送邮件到我的电子邮件地址,我收到错误

     

...过去工作得很好。

您可能会受到这种印象,但此设置确实无法让在S3上工作。

S3不支持PHP或任何服务器端语言。 S3从未支持服务器端脚本。

  

您可以在Amazon Simple Storage Service(Amazon S3)上托管静态网站。在静态网站上,个人网页包含静态内容。它们也可能包含客户端脚本。相比之下,动态网站依赖于服务器端处理,包括服务器端脚本,如PHP,JSP或ASP.NET。 Amazon S3不支持服务器端脚本。

     

https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html

您只能下载文件这一事实表明它存储在S3上。实际支持PHP的Web服务器不允许您下载文件 - 它将在服务器上执行文件,并返回生成的输出。