2013-02-25 1 views
1

Я использую Amazon S3 для хранения изображений моего сайта. У меня есть политика ведра, которая останавливает другие сайты, ссылающиеся на мои изображения.предотвращать хотлинкинг изображений, но разрешать прямой доступ

Чтобы заставить это работать, у меня есть разрешение на использование файла «private» в S3, а затем политика ведра открывает доступ только к моему веб-сайту.

Это прекрасно работает, но поскольку файл является «закрытым», я не могу просматривать изображение непосредственно в браузере, и это то, что я хочу разрешить.

Вот политика

{ 
    "Version": "2008-10-17", 
    "Id": "preventHotLinking", 
    "Statement": [ 
    { 
     "Sid": "1", 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "*" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::mybucket/*", 
     "Condition": { 
     "StringLike": { 
      "aws:Referer": [ 
      "http://mydomain.com/*", 
      "http://www.mydomain.com/*" 
      ] 
     } 
     } 
    } 
    ] 
} 

Итак, подведем итоги:

  • сам файл находится в частной
  • вышеуказанной политики позволяет изображения, которые будут отображаться на страницах из области " mydomain.com ", но не на" someelsesdomain.com "

Это также блокирует d однако, при вставке http://jbtestyt.s3.amazonaws.com/archie.jpg в браузер не отображается изображение (потому что оно личное).

Но я хотел бы, чтобы изображение отображалось для прямого доступа.

Возможно, решение состоит в том, чтобы сделать файл общедоступным, а затем лишить всех рефереров, кроме тех, которые я перечисляю? Но я не был уверен, и не мог найти ничего подобного.

Большое спасибо заранее.

ответ

0

Я предполагаю, что вы ищете «родное» решение S3, поэтому здесь идет. Если вы действительно думаете об этом, hotlinking по сути является «прямым доступом» к файлу. Поэтому «сам файл имеет значение private» всегда гарантирует, что (по крайней мере, по AWS) вы не можете напрямую обращаться к нему независимо от того, что. Это по дизайну на S3. То, что вы предлагаете для переадресации ссылок, вероятно, является единственным простым способом, которым вы собираетесь это сделать, используя только S3.

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