2015-09-10 4 views
0

У меня есть AWS S3 ведро конфигурация CORS устанавливается следующим образомCORS ошибка AWS S3 загрузки ковша

<?xml version="1.0" encoding="UTF-8"?> 
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
    <CORSRule> 
     <AllowedOrigin>*</AllowedOrigin> 
     <AllowedOrigin>http://localhost:5000</AllowedOrigin> 
     <AllowedMethod>GET</AllowedMethod> 
     <AllowedMethod>POST</AllowedMethod> 
     <AllowedMethod>PUT</AllowedMethod> 
     <AllowedHeader>*</AllowedHeader> 
    </CORSRule> 
</CORSConfiguration> 

И сделать запрос подписанных загрузок в браузере:

function upload_file(file, signed_request, url){ 
    var xhr = new XMLHttpRequest(); 
    xhr.open("PUT", signed_request); 
    xhr.setRequestHeader('x-amz-acl', 'public-read'); 
    xhr.onload = function() { 
     if (xhr.status === 200) { 
      $('#photo').css('background-image', "url('"+url+"')"); 
     } 
    }; 
    xhr.onerror = function(err) { 
     alert("Could not upload file.", err); 
    }; 
    xhr.send(file); 
} 

Но как хром и firefox бросает заголовок Access-Control-Allow-Origin, не устанавливая ошибку. В частности, в firefox: «(Причина: заголовок CORS« Access-Control-Allow-Origin »отсутствует)».

+0

Вам нужно будет сделать загрузку с сервера, а не от клиента от того, что я знаю о CORS. –

+0

Из статей, которые я прочитал, вы можете напрямую загрузить в ведро S3. Я запускаю узел на сервере, поэтому хочу избежать прохода через загрузку ... – OliverJ90

+0

Вы правы, хотя я сделал это только с помощью углового модуля (я помню сейчас). Виноват. –

ответ

1

Заголовок Access-Control-Allow-Headers не допускает подстановочные знаки. Он должен содержать имена фактических заголовков.

Обратите внимание на предполетный запрос на вашей сетевой вкладке. Значения в заголовке Access-Control-Request-Headers должны быть указаны как AllowedHeader.

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