我遇到一个问题,我的图表(使用AJAX-POST-PHP)没有出现在亚马逊上
http://cdpmotest.s3-website.eu- central-1.amazonaws.com/
它说(错误的方法405错误)
这是我的CORS Config:
<?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>
在localhost(WAMPServer)上工作正常
你能帮我吗?
该错误的直接原因与CORS无关,实际上是由S3网站终结点不支持POST(只有REST终结点支持,但实际上与当前问题无关)引起的。
POST
真正的问题是,您似乎试图将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
您可以在Amazon S3上托管静态网站。在静态网站上,单个网页包含静态内容。它们也可能包含客户端脚本。相比之下,动态网站依赖于服务器端处理,包括服务器端脚本,例如PHP,JSP或ASP.NET。Amazon S3不支持服务器端脚本。
http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html
该文档的同一页将为您提供完成所需内容的替代AWS解决方案。