Internet Explorer удаляет расширение .exe из загрузки, если за ним следуют параметры URL

Теперь я обслуживаю файлы с Amazon S3, и я создаю безопасный URL-адрес с помощью API. Работает отлично везде, кроме людей, загружающих файлы .exe в IE. Я тестировал это на IE 8 и 7.

При запуске локального веб-сервера вы можете протестировать, установив notepad.exe в свой веб-корень. Перейдите в http://localhost/notepad.exe (или эквивалент) Теперь попробуйте http://localhost/notepad.exe?

Он должен сохранить файл в виде блокнота без расширения. Является ли это "особенностью", потому что в googling ничего не происходит. Благодаря всей проблеме расширений IE вы не можете найти что-либо в расширениях файлов.

Кроме того, если файл имеет несколько периодов в имени, он иногда получает [1] или [] в конце.

Любые идеи? Документы об этом ужасном поведении? Похоже, что это должна быть функция безопасности, но мне еще нужно найти ее, чтобы отключить ее.

И как всегда, спасибо. Тим

Ответ 1

Здесь долгая история, но простой способ - сделать это:

http://www.example.com/dl/test.exe?mysecret=12321412&FixForIE=.exe

Что касается трейлинга [1] или чего-то еще, нет, на самом деле вы ничего не можете с этим поделать, если раньше пользователь загружал с этого URL-адреса.

Ответ 2

У нас была такая же проблема при обслуживании файлов с S3. Оказывается, вам нужно правильно настроить контент-размещение, чтобы IE правильно обрабатывал файлы. А именно, заголовок HTTP

Content-Disposition: attachment; имя файла = "text.exe"

В этой статье описывается чуть подробнее: http://www.jtricks.com/bits/content_disposition.html