У меня есть очень простое приложение ASP.NET MVC 5, размещенное на сервере интрасети, где на одной из страниц есть iframe
для отображения документа:
<div class="document-view-container">
...
<iframe class="document-frame" src="@Url.Action("GetDocumentImage", "Imaging", ...)" ></iframe>
...
</div>
Иногда возвращаемый документPDF служил application/pdf
, иногда фрагмент текста служил text/plain
, а иногда XML служил text/xml
.
. Метод GetDocumentImage
извлекает содержимое документа из базы данных и возвращает егоиспользование File
:
return File(doc.document.ToArray(), doc.mime_type);
Когда документ представляет собой XML, он часто содержит ссылку на таблицу стилей, с которой его следует просматривать:
<?xml-stylesheet type="text/xsl" href="//server.local/folder/content/grn.xslt"?>
<document>
...
</document>
Иногда эта таблица стилей происходит из того же субдомена, что и то, что возвращает @Url.Action()
(т. Е. Тот же источник с iframe
), но иногда это не так.
Если это не так, таблица стилей успешнозагружен и используется в Firefox, но Chrome отказывается загружать таблицу стилей и отображает в консоли ошибку
Небезопасная попытка загрузить URL http://server.local/folder/content/grn.xslt
из фрейма с URL http://documents.server/imaging/GetDocumentImage/52855
.Домены, протоколы и порты должны совпадать.
Это известная проблема, но, насколько я понимаю, она применима только к локальным файлам, а не к файлам, обслуживаемым с сервера, и одно из решений специально разместить файлы на сервере .Кроме того, он работает в Firefox.
Каков источник этой проблемы?
- Это Chrome, который обрабатывает XML в
iframe
как локальный файл и, следовательно, неправильноне позволяет ему запрашивать таблицу стилей с сервера? - Является ли Firefox проблемой безопасности, когда он разрешает XML-файл из
iframe
запроса таблицы стилей, когда это должно быть запрещено? - Это я, кто недостаточно правильно обрабатывает XML с сервера, заставляя Chrome принять его за локальный файл?
Как правильно это исправить?