Мы даем возможность нашим пользователям загружать видео в нашу корзину S3. Он был оснащен опцией "ускорение" и использованием загрузки нескольких частей из нашего JS. Тем не менее, мы заметили нечто очень тревожное: у нас есть тысячи успешных загрузок из стран, где интернет быстрый.
Тем не менее, практически все пользователи с медленным подключением (которые все происходят из мест, где интернет не славится скоростью) не могут загрузить данные. Как только они начинают загружать, они получают десятки этих ошибок на своей консоли, и загрузка застревает и завершается неудачно.
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://our-secret-bucket-xxxxxx.s3-accelerate.amazonaws.com/tyoeu/Abbey%…BAYmLRf4.YqtrWLwkD9uc5wGp0.rpyIV6xqDHxHqNaEsaxQTMAHs3g8DXdL3. (Reason: CORS request did not succeed).
Настройка CORS для этого сегмента выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>43200</MaxAgeSeconds>
<ExposeHeader>ETag</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Мы помогаем загружать неудачных пользователей вручную, прося их загрузить их в Dropbox и поделиться с нами ссылкой - но это еще одно доказательство того, что что-то не так - если они могут загружать в Dropbox свои медленные соединения, почему они не могут загрузить в AWS/S3? Это грызло наши души уже довольно давно, и мы не можем понять, что не так.
Конечно, мы не единственная компания на планете Земля, которая позволяет людям со всего мира загружать большие файлы. Почему мы терпим неудачу с медленными пользователями соединения?