полученные заголовки HTTP неправильные / неожиданные для типа файла XSL

StackOverflow https://stackoverflow.com/questions/1205864

  •  05-07-2019
  •  | 
  •  

Вопрос

Я использую PHP + curl для получения файла XSL, но сначала я хочу сделать некоторую минимальную проверку того, что файл действительно является файлом XSL.

Я уверен, что файл существует, имеет код состояния 200 OK и правильное расширение файла, но затем я хочу проверить заголовок для Content-Type. Я делаю это с помощью функции curl_getinfo () . Все хорошо.

Но XSL-файлы всегда возвращают " code / application / xml " или " text / xml " как Content-Type, который предназначен для файлов XML. Я считаю, что заголовок XSL должен быть application / xslt + xml . Итак, что здесь происходит и как я могу убедиться, что это документ XSL?

Это было полезно?

Решение

Вы можете проверить пространство имен XSLT в файле. Если версия PHP > = 5.1.2, используйте SimpleXmlElement :: getNamespaces ()

Другие советы

Используете ли вы это для доступа к сторонним сайтам или сайтам, которые вы настраиваете самостоятельно? Если это ваш собственный сайт, вам нужно настроить Apache для обслуживания соответствующих типов пантомимы в зависимости от расширения файла.

Если это сторонние сайты, я не уверен, что вы можете положиться на типы пантомимы, поскольку они могут обслуживать все, что захотят. Лучше всего просто получить первые несколько строк файла и проверить, что корневым элементом является xsl.

Другой подход, для PHP 5:

<Ол>
  • Вы можете попытаться загрузить таблицу стилей в XSLTProcessor . Возможно, выдается исключение, если таблица стилей неверна
  • (лучше IMHO) Проверить таблицу стилей XSL по ее схеме
  • Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top