Amazon S3 - 405方法不允许使用POST(尽管我允许在桶上POST)


Amazon S3 - 405 Method Not allowed using POST (Although I allowed POST on the bucket)

我正面临一个问题,我的图形(使用AJAX - POST - PHP)不出现在亚马逊

http://cdpmotest.s3 - website.eu中央- 1. - amazonaws.com/

its says (Wrong Method 405 Error)

这是我的CORS配置:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

这是我的脚本:

<script>
$(document).ready(function(){
     var randomScalingFactor = function(){ return Math.round(Math.random()*100)};
     $.ajax({
         url: 'graph-data.php',
         type: 'POST',
         dataType: 'json',
         success: function(data) {
              var array1 = data.map(function(item) {
                  return parseInt(item[1], 10);
              });
              var array2 = data.map(function(item) {
                  return parseInt(item[2], 10);
              });
              createGraph(array1, array2);
         }
     });//end AJAX request
function createGraph(array1, array2) {
     var ctx = document.getElementById("chart-area1").getContext("2d");
     var barChartData = {
     labels : ["Land Acquisition","Design Concept","Permits and  Licensing","Tendering","Elec.+Water Requests","Construction Start","Construction Finish","Site Handover"],
     datasets : [
     {
          fillColor : "rgba(0,154,166,0.5)",
          strokeColor : "rgba(0,154,166,0.8)",
          highlightFill: "rgba(0,154,166,0.75)",
          highlightStroke: "rgba(0,154,166,1)",
          data : array1
     },
     {
          fillColor : "rgba(77,79,83,0.5)",
          strokeColor : "rgba(77,79,83,0.8)",
          highlightFill : "rgba(77,79,83,0.75)",
          highlightStroke : "rgba(77,79,83,1)",
          data : array2
    }
    ]
    }//end bar chart data
    window.myBar = new Chart(ctx).Bar(barChartData, {
        responsive : true
    });
    }//end createGraph
    });
    </script>

在本地主机(WAMPServer)上运行良好

你能帮我一下吗?

错误的直接原因与CORS无关,实际上是由于S3网站端点不支持POST(只有REST端点支持它,但这实际上与手头的问题无关)。

真正的问题是,您似乎试图使用S3做一些它不做的事情。

 $.ajax({
     url: 'graph-data.php',
     type: 'POST',

S3是一个对象存储,而不是一个应用服务器。

你不能在S3上运行php。您不能在S3上执行任何服务器端代码。

你可以在Amazon S3上托管一个静态网站。在静态网站中,单个网页包含静态内容。它们还可能包含客户端脚本。相比之下,动态网站依赖于服务器端处理,包括服务器端脚本,如PHP、JSP或ASP.NET。Amazon S3不支持服务器端脚本。

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

同一页的文档将为您指出实现所需的替代AWS解决方案。