Нужно ли настраивать локальные cors?

Я интегрировал carrierwave_direct загрузить прямо в мое ведро s3. Я делаю это через модальное всплывающее окно, где jquery-fileupload берет на себя. Это все работало отлично, когда я не использовал jquery, но теперь он загружает файл, но вызывает fail метод в jquery-файле загрузки.

Мое ведро имеет следующую конфигурацию Cors:

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

контроллер:

def file_upload
  @uploader = StudentTranscript.new.upload
  @uploader.success_action_redirect = new_student_student_transcript_url #NEVER GETS CALLED
end

мой JS выглядит следующим образом:

$('#new_file_uploader').fileupload({
  dataType: "script",
  add: function(e, data) {
    var file, types;
    types = /(\.|\/)(gif|jpe?g|png|zip)$/i;
    file = data.files[0];

    if (types.test(file.type) || types.test(file.name)) {
      data.context = $(tmpl("template-upload", file));
      $('#new_file_uploader').append(data.context);
      data.submit();
    } else {
      alert("" + file.name + " is not a gif, jpeg, or png image file");
    }
  },
  progress: function(e, data) {
    var progress;
    if (data.context) {
      progress = Math.round((data.loaded / data.total) * 100) || 0;
      data.context.find('.bar').css('width', progress + '%');
    }
  },
  done:function (e, data) {
    alert("Success");
  },
  fail: function(e, data) {
    alert('Fail!');
  }
});

Когда я иду, чтобы загрузить файл, все работает, т.е. файл загружен, но когда дело доходит до s3, отправляющего ответ обратно на localhost, я получаю следующее:

XMLHttpRequest cannot load https://bucket.s3.amazonaws.com/. The request was redirected to 'http://localhost:3000/student/student_transcripts/new?bucket=antdna&key=upl…hot+2014-06-24+at+18.13.53.png&etag=%221d6d718f8468e3044ab0a61bde5c3bcc%22', which is disallowed for cross-origin requests that require preflight.

Нужно ли мне настраивать конфигурацию cors в моем приложении Rails? Я видел несколько постов, где люди используют before_filters в application_controller.rb для установки заголовков

0 ответов

Другие вопросы по тегам