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

У меня есть 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 загружен в виде application / octet-stream (и, следовательно, некорректно отображается). Что мне нужно изменить, чтобы Chrome правильно распознавал MIME-тип (как указано в теге)? Может ли это быть ошибкой в ​​Chrome (как предложено в этом SO-ответе )? Если да, есть ли способ обойти загрузку файла SVG другим способом (например, возможно, тегом embed)?

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

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

1 Ответ

9 голосов
/ 14 октября 2011

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

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

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

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

...