Подтвердить что ты не робот

Chrome не загружает файл SVG в качестве изображения /svg + xml

У меня есть веб-страница SharePoint, которая ссылается на файл SVG, хранящийся в списке RootFolder из списка SharePoint внутри тега img:

<img src='http://localhost/Lists/MyList/1/1.svg' type='image/svg+xml' />

Изображение отображается правильно в IE9 на рабочем столе, а также на устройствах iOS (Safari). Однако в Chrome на Windows (я использую v14 на данный момент) он не отображается. Вместо этого он отображает значок сломанного изображения.

Вкладка "Сеть" в Chrome показывает, что файл 1.svg загружен как приложение/октет-поток (и, следовательно, неправильный рендеринг). Что мне нужно изменить, чтобы Chrome правильно распознал тип MIME (как указано в теге)? Может ли это быть ошибкой в ​​Chrome (как предложено в this SO answer)? Если да, есть ли способ для работы с SVG файлом по-другому (например, встроенный тег)?

Обратите внимание, что отладчик IE (F12) правильно идентифицирует тип как image/svg + xml и, следовательно, отображает изображение как ожидалось.

Изменить:. Поскольку проблема связана с сервером (спасибо @robertc), я добавил, что файл поддерживается SharePoint, подозревая, что SharePoint может не распознавать тип MIME.

4b9b3361

Ответ 1

В элементе img атрибут type отсутствует, вам нужно правильно установить тип MIME на сервере. Я думаю, что он работает только в IE, потому что он делает обнюхивание контента.

В IIS7 и выше вы можете указать MIME-типы в файле web.config в разделе system.webServer:

<staticContent>
  <mimeMap fileExtension=".svg" mimeType="image/svg+xml"/>
</staticContent>

После этого он должен работать во всех браузерах, но вам может потребоваться обновить силу (Ctrl + F5), чтобы заставить их снова запросить файл.