2015-08-16 2 views
2

Я столкнулся с проблемой, что мой график (с помощью AJAX - POST - PHP) не появляется на АмазонкеAmazon S3 - 405 Метод Не допускается с помощью POST (Хотя я позволил POST на ведро)

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> 

Его работает отлично на локальном хосте (WampServer)

Можете ли вы помочь мне, пожалуйста?

+0

Код статуса 405 http: «Метод, указанный в строке запроса, не разрешен для ресурса, идентифицированного Request-URI. Ответ должен включать заголовок« Разрешить », содержащий список допустимых методов для запрашиваемого ресурса. »(см. http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html). Можете ли вы установить заголовок allow в своем запросе на что-то? Кажется, сейчас пусто, может быть, в этом и проблема. – dr0i

+0

У меня есть SET CORS для * где * является подстановочным знаком, позволяющим всем заголовкам – Deyab

ответ

4

Прямая причина ошибки не связана с CORS и на самом деле вызвана тем фактом, что конечные точки сайта S3 не поддерживают POST (только поддерживающие его конечные точки REST, но на самом деле это не связано с проблемой на рука).

Настоящая проблема заключается в том, что вы пытаетесь использовать S3 для чего-то, чего она не делает.

$.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

То же страница документации укажет на альтернативные решения АМС для достижения того, что вы хотите.

+0

Я вижу .... Я даже пытался использовать GET, и это не сработало. Ошибка 405 исчезла, когда я использовал GET, но график не появился. Хотя он появился на Localhost, используя GET – Deyab

+0

Ну, правильно, но не релевантно, потому что ошибка на самом деле не о 'POST'. Вы не можете запускать php или любой другой серверный язык на S3. –

+0

Спасибо .... Да, он не может работать на S3 ... Я понял, что это подтвердилось ... Спасибо. – Deyab

Смежные вопросы