Amazon S3-405 метод не разрешен с помощью POST (хотя я разрешил POST на ведре)
Я столкнулся с проблемой, что мой граф (с использованием AJAX-POST-PHP) не появляется на Amazon
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)
Не могли бы вы мне помочь, пожалуйста?1 ответ:
Прямая причина ошибки не связана с CORS и на самом деле вызвана тем, что конечные точки сайта S3 не поддерживают
Реальная проблема заключается в том, что вы, похоже, пытаетесь использовать S3 для чего-то, чего он не делает.POST
(только остальные конечные точки поддерживают его, но это на самом деле не связано с данной проблемой).$.ajax({ url: 'graph-data.php', type: 'POST',
S3-этохранилище объектов , а не сервер приложений.
Вы не можете запустить php на S3. Вы не можете выполнить какой-либо код на стороне сервера на S3.
Вы можете разместить статический веб-сайт на Amazon S3. На статическом веб-сайте отдельные веб-страницы содержат статический контент. Они также могут содержать клиентские сценарии. Напротив, динамический веб-сайт опирается на серверную обработку, включая серверные скрипты, такие как PHP, JSP или ASP.NET Amazon S3 не поддерживает серверные сценарии.
Http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html
Та же самая страница документация укажет вам альтернативные решения AWS для выполнения того, что вы хотите.