Каков процесс, с помощью которого send_file Sinatra решает, какой тип контента использовать?
Например, кажется, что это работает по расширению файла, переданного в send_file, поэтому, если это send_file blah.txt. затем, когда я перейду по маршруту, я получу / заголовок ответа будет content-type: text/plain
, поэтому любой html в текстовом файле будет интерпретироваться веб-браузером как обычный текст. Принимая во внимание, что если это файл blah.html, то сервер ответит content-type: text/html
(и любой html в файле будет отображаться как таковой)
И, конечно же, имя маршрута не имеет значения, поэтому вы можете перейти к http://127.0.0.1:4567/zzz.html
, и это может привести к send_file. a.txt и a.txt могут содержать теги html, но, поскольку это файл .txt
, send_file заставит Sinatra ответить content-type: text/plain
, и браузер не будет t отображать любой отправленный html и отображать его как обычный текст. Я могу ошибаться, но мои быстрые тесты показывают именно это. Где я пробовал разные маршруты, разные расширения имен файлов (.txt и .html), иногда файлы с html в них, иногда нет, смотря, отображает ли браузер html или нет, и видя заголовок типа содержимого, с помощью wget - д.
Итак, мой вопрос, связанный с этим, заключается в том, существует ли список, который использует функция send_file Sinatra, который связывает расширение файла с типом содержимого? Я хотел бы увидеть этот список. И если нет, то какой процесс он использует.
Примечание. Я понимаю, что есть способ передать тип содержимого Sinatra: Как ответить изображением с заголовками content-type =› image/jpeg, но я спрашиваю, как/каким методом send_file определяет тип содержимого при отсутствии содержимого -type передается.