【问题标题】:Serving html file in Erlang Cowboy but it displays as text在 Erlang Cowboy 中提供 html 文件,但它显示为文本
【发布时间】:2012-08-24 18:25:40
【问题描述】:

我正在尝试使用 Erlang Cowboy 提供动态生成的 html 页面,但它在 Firefox 14.0.1 中显示为文本。

这是从浏览器页面源复制的文档类型和初始标题标签:

<DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-type" content="text/html;charset="UTF-8"><title>Welcome!</title>
<link href="css/bootstrap.css" rel="stylesheet">
yada yada

如果我不使用文档类型,它会按预期显示。

Bootstrap Scaffolding (http://twitter.github.com/bootstrap/scaffolding.html) 调用 html 文档类型。

我不确定这是我的 html 还是我的 Cowboy 配置的问题。

这是 _app.erl 中 Dispatch 的相关部分:

   {['...'], cowboy_http_static,
       [ {directory, {priv_dir, cw, []}},
           {mimetypes, [  {<<".css">>, [<<"text/css">>]} ]}

有人可以告诉我我的方式错误吗?

非常感谢,

LRP

【问题讨论】:

  • &lt;!DOCTYPE html&gt; ... 它是否与领先的! 一起使用?

标签: html erlang cowboy


【解决方案1】:

试试这个

{['...'], cowboy_http_static,
   [ {directory, {priv_dir, cw, []}},
       {mimetypes, [{<<".css">>, [<<"text/css">>]},
                    {<<".html">>, [<<"text/html">>]}]}

【讨论】:

  • 我非常希望这就是答案。但没有骰子。不过,谢谢。
  • 这是来自 Firefox 的错误消息:“错误:未声明纯文本文档的字符编码。如果文档包含来自美国以外的字符,则在某些浏览器配置中,该文档将呈现乱码文本-ASCII 范围。文件的字符编码需要在传输协议中声明或文件需要使用字节顺序标记作为编码签名。这似乎表明 Cowboy 配置存在问题。但这超出了我的技术掌握范围。
  • 您可以尝试更改 HTML 文件的内容吗:将 Content-Type 标头替换为:&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
  • 还是不满意。而且我仍然收到相同的错误消息。这是标题的前几行: 欢迎!
【解决方案2】:

我使用 cowboy_static 来提供 DOCTYPE html,它可以正常工作,并且具有正确的 mimetype。 缺少感叹号:“!DOCTYPE” 而不是“DOCTYPE”

&lt;!DOCTYPE html&gt;

http://www.w3schools.com/tags/tag_doctype.asp

编辑: Firefox 和 Chrome 也接受 &lt;DOCTYPE html&gt;。所以问题很可能是 Mimetype。

【讨论】:

  • 这可能是它!我的 Cowboy 测试台目前已关闭,但我会先尝试一下。非常感谢。
猜你喜欢
  • 2015-12-06
  • 2013-10-22
  • 2012-06-15
  • 2010-10-02
  • 2021-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-14
相关资源
最近更新 更多