我有一个包含我的投资组合的网站,该网站托管在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/*"
}
]
}
答案 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服务器不允许您下载文件 - 它将在服务器上执行文件,并返回生成的输出。