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

我遇到一个问题,我的图表(使用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终结点支持,但实际上与当前问题无关)引起的。

真正的问题是,您似乎试图将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解决方案。

以上是 Amazon S3-405方法不允许使用POST(尽管我在存储桶中允许POST) 的全部内容, 来源链接: utcz.com/qa/427078.html

回到顶部