Нужно ли настраивать локальные 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 для установки заголовков