我使用HTTPS在AWS Cloudfront发行版后面的AWS S3存储桶中托管了一个网站(HTML和JavaScript)的静态内容。
我用谷歌搜索并阅读了很多关于这个问题但未找到适合我简单环境的答案(没有Facebook,只是一个简单的联系表格)。
HTML包含一个包含所有常用内容的联系表单。
JavaScript看起来像这样。
$('form#contactForm button.submit').click(function() {
$('#image-loader').fadeIn();
var contactName = $('#contactForm #contactName').val();
var contactEmail = $('#contactForm #contactEmail').val();
var contactSubject = $('#contactForm #contactSubject').val();
var contactMessage = $('#contactForm #contactMessage').val();
var data = 'contactName=' + contactName + '&contactEmail=' + contactEmail +
'&contactSubject=' + contactSubject + '&contactMessage=' + contactMessage;
$.ajax({
type: "POST",
url: "https://contact.website.com/inc/sendEmail.php",
data: data,
success: function(msg) {
// Message was sent
if (msg == 'OK') {
window.location.replace("https://www.website.com/response.html");
}
// There was an error
else {
$('#image-loader').fadeOut();
$('#message-warning').html(msg);
$('#message-warning').fadeIn();
}
}
});
查看帖子如何从Cloudfront分发版转到具有不同域/ A记录的子域,但也是通过HTTPS。
Cloudfront引发的错误(我相信 - 但是当它不使用分发域时,为什么帖子会转到Cloudfront?):
<html>
<head><title>405 Method Not Allowed</title></head>
<body>
<h1>405 Method Not Allowed</h1>
<ul>
<li>Code: MethodNotAllowed</li>
<li>Message: The specified method is not allowed against this resource.</li>
<li>Method: POST</li>
<li>ResourceType: OBJECT</li>
<li>RequestId: E2BD58A9310500B7</li>
<li>HostId: VC3CF0HmNQU+ZsVJ2XVu+xBlExVZje9gKZNGVRYnPoZ3wnhTTtQ2L6PBlP6ciTMUM9qp377jhgk=</li>
</ul>
<hr/>
</body>
</html>
我还对AWS Cloudfront进行了这些更改以启用POST方法:
我还对AWS S3 Bitbucket进行了这些更改,以通过CORS启用POST:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
非常感谢任何帮助。
如果你说不能做,请解释原因和最佳选择。
谢谢。
的问候, 安德鲁。