【问题标题】:AWS S3 Bucket suddenly responding to POST request with 403 ForbiddenAWS S3 存储桶突然以 403 Forbidden 响应 POST 请求
【发布时间】:2018-05-29 07:34:22
【问题描述】:

我有一个包含我的投资组合的网站,该网站托管在 AWS S3 存储桶中。以前可以正常工作,但突然联系我部分停止工作。

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

"mail/contact_me.php:1 加载资源失败:服务器响应状态为 403 (Forbidden)"

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

我在 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/*"
    }
 ]
}

【问题讨论】:

  • 您的存储桶策略允许对所有人执行 all S3 操作。这是非常不可取的。如果您的意思是它只提供公共读取访问权限,如 Sid 建议的那样,则将操作更改为 s3:GetObject。
  • 谢谢,我现在已经改变了。虽然仍然没有解决这个问题,我已经尝试更改存储桶策略设置等,但似乎没有任何效果。我在这里读过“Sthe”的评论“stackoverflow.com/questions/26691286/…”,谈论系统时间。这可能是问题吗?我还没有找到如何更改系统时间,或者这是否与我相关。

标签: amazon-web-services amazon-s3


【解决方案1】:

我有一个 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 服务器不会让您下载文件——它会在服务器上执行文件,并返回生成的输出。

【讨论】:

  • 有趣的是,我可以发誓它可以用来工作。我想我只在本地测试过。谢谢
猜你喜欢
  • 1970-01-01
  • 2020-08-06
  • 2021-03-16
  • 2012-09-16
  • 2016-08-05
  • 2017-11-12
  • 2020-08-12
  • 2016-03-12
  • 2015-08-01
相关资源
最近更新 更多