Мне было поручено обслуживать файл изображения с нашего сервера, на который ссылается документ html, находящийся на нескольких других серверах. Для остроумия:Можно ли надежно узнать, откуда возникла HTTP-запрос без сценариев?
файла на foo.com:
<img src='http://bar.com/image.jpg'>
Когда пользователь переходит к foo.com, он отображает изображение с нашего сервера, bar.com. (Фактически это отправляет другое изображение, основанное на том, что веб-сайт сделал запрос.)
Но вот улов: они хотят, чтобы посетители определенных компаний могли получать файл (в настоящее время идентифицируется доменным именем сервера, но это не требование).
В идеальном мире вы просто посмотрите HTTP_REFERER и, если он находится в одобренном списке, откройте файл. Но, как известно, не каждый пользовательский агент поставляет HTTP_REFERER, и он может быть подделан в любом случае.
Было бы лучше не запускать javascript или php, но это то, что мы можем даже без сценариев?
Если нет, есть ли способ сделать это, используя только javascript таким образом, чтобы другой веб-сайт не мог обманывать их путь к загрузке файла?
Если нет, то как бы вы приблизились к нему с помощью PHP?
Вы говорите о веб-сайте, загружающем файл? Файлы загружаются клиентами в браузерах, а не сайтами. Каждый HTTP-запрос, будь то для страницы, сценарий, изображение и т. Д., Представляет собой отдельный запрос, исходящий из браузера пользователя, а не веб-сайт, который они просматривают. –
Ну, серверные загрузки по-прежнему возможны. Но это похоже на то, что OP просто хочет спросить «что хорошего способа аутентификации загрузок» в любом случае – Evert
Да, я понимаю, что пользовательские агенты выполняют загрузку, и в конечном итоге проблема в том, что им нельзя доверять HTTP_REFERER , Я не хочу проверять подлинность загрузок; Я хочу, чтобы любой публичный пользователь из «белого списка» сервера мог просматривать изображение, но никаких других серверов. – pbarney