Iron将html呈现为文本

时间:2017-07-21 01:23:09

标签: html web rust iron

我的Iron Web应用程序的一部分:

lazy_static! {
    pub static ref TEMPLATES: Tera = {
        let mut tera = compile_templates!("templates/**/*");
        tera.autoescape_on(vec!["html", ".sql"]);
        tera
    };
}

fn index(_: &mut Request) -> IronResult<Response> {
    let ctx = Context::new();
    Ok(Response::with((iron::status::Ok, TEMPLATES.render("home/index.html", &ctx).unwrap())))
}

它在浏览器中将HTML模板呈现为文本。为什么不用HTML?

1 个答案:

答案 0 :(得分:2)

那是因为您没有设置内容的MIME类型。
有关如何解决此问题的完整示例,请参阅Iron's own examples

一种可能性是:

use iron::headers::ContentType;

fn index(_: &mut Request) -> IronResult<Response> {
    let ctx = Context::new();
    let content_type = ContentType::html().0;
    let content = TEMPLATES.render("home/index.html", &ctx).unwrap();
    Ok(Response::with((content_type, iron::status::Ok, content)))
}