Каков процесс отправки sendat-файла в sinatra, какой тип контента использовать?
Например, кажется, что он работает по расширению файла, переданного в send_file, так что если это send_file blah.txt. затем, когда я http для маршрута, я получу / заголовок ответа будет 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
, и браузер не будет отображать отправленный html и будет отображать его в виде простого текста. Возможно, я ошибаюсь, но, похоже, именно это показывают мои быстрые тесты. Где я пробовал разные маршруты, разные расширения имени файла (.txt и .html), иногда файлы с html в них, иногда нет, видя, отображает ли браузер html или нет, и просматривая заголовок типа контента, с помощью wget - д.
Итак, мой вопрос, связанный с этим: есть ли список, который использует функция send_file в sinatra, который связывает расширение файла с типом контента? Я хотел бы увидеть этот список. А если нет, то каков процесс, который он использует.
Примечание. Я понимаю, что существует способ передачи типа содержимого Синатра: как ответить изображением с заголовками "content-type" => "image / jpeg"
но я спрашиваю, каким образом / каким методом send_file определяет тип содержимого, когда не передается тип содержимого.