Почему Chrome пытается загрузить / сохранить файл xml, полученный из gatsby на локальном хосте, а не отображать в браузере, если в имени файла отсутствует суффикс '. xml'? - PullRequest
0 голосов
/ 11 февраля 2020

Это вопрос о том, как веб-сервер обрабатывает запросы на файлы XML, в зависимости от того, имеет ли файл суффикс '. xml' в имени файла или нет.

Заранее извиняюсь Я не совсем знаком с тем, как веб-серверы и браузеры ведут себя в этом контексте.

Я достиг этого вопроса, работая с Gatsby . Разработка на localhost.

Возник вопрос, потому что я наблюдал, как локальные файлы, обслуживаемые gatsby XML, ведут себя иначе, чем другие подобные XML файлы, полученные с других хостов. Я не уверен, если это красная селедка для проблемы.


Хорошо, спасибо за чтение, вот подробности.

У меня есть xml файл / ресурс, который обслуживается gatsby (т. е. с использованием gatsby develop или gatsby serve)

Если я назову файл как my-xml-file.xml, а затем перейду к нему в браузере (Chrome ), через http://localhost:8000/my-xml-file.xml, тогда все нормально. Chrome загружает / отображает это в браузере.

Однако, если я переименую файл просто в my-xml-file, то есть удалим суффикс '. xml' из имени файла, то при попытке перейдите к нему в браузере (Chrome) через http://localhost:8000/my-xml-file, тогда Chrome не загружает / не отображает его. Вместо этого в этом сценарии Chrome открывает диалоговое окно «Сохранить как».

Любые идеи, что здесь происходит?

Причина, по которой меня это смущает, заключается в том, что я go другим я знаю, что в Интернете есть файлы xml, которые обслуживаются без суффикса '. xml', Chrome с удовольствием загружает / отображает их в браузере.

Например:

Chrome загружает / отображает эти URL-адреса непосредственно в браузере

Почему у меня отличается поведение при обработке файла xml без суффикс. xml в имени файла по сравнению с другими сайтами, как в приведенных выше примерах?


Вещи, которые я до сих пор пытался выяснить.

  • Служить локально, используя файл /my-xml-file.xml, открыть в Chrome

    • Результат: Chrome загрузка / отображение файла в окне браузера
  • Служит для локального обслуживания файла, используя / my- xml -файл, открывается в Chrome

    • результат: Chrome открывает save-as диалог
  • Переименуйте файл и используйте его как /my-xml-file.rss, откройте в Chrome

    • результат: Chrome загружает / отображает файл в окне браузера
  • Служит для локального использования файла, используя / my- xml -file. xml, открыть в Edge

    • результат: Edge загружает / отображает файл в окне браузера
  • Служит локально, используя файл / my- xml -файл, открытый в Edge

    • результат: Edge загружает / отображает файл в окне браузера
  • Поиск в StackOverflow аналогичный вопросы. Нашел следующее (но ни один, кажется, не соответствует этой проблеме конкретно

  • Проверен заголовок ответа из моего локального примера и сравнил это с другими примерами выше. Есть кое-что, что привлекло мое внимание ... значение в ответе для Content-type отличается ...

    • От моего localhost: Content-Type: application/octet-stream
    • Из других примеров:
    • a) : content-type: application/rss+xml; charset=utf-8
    • b) : Content-Type: text/html; charset=UTF-8
    • c) : content-type: application/rss+xml; charset=utf-8

1 Ответ

0 голосов
/ 12 февраля 2020

Я думаю, что нашел ответ, основываясь на моем исследовании заголовка ответа.

Значение content-type должно быть установлено соответствующим образом для ресурса xml.

На моем локальном хосте файл без суффикса '. xml' в имени обслуживался как application/octet-stream.

Возможно, он должен быть как-то вроде application/rss+xml; charset=utf-8 или, возможно, application/xml.

У меня еще не было возможности подтвердить это, я сообщу, когда я это сделаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...