1

我创建了最简单的 html 页面

<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>App</title>
    </head>
    <body>
        Hello, world.
    </body>
</html>

python -m SimpleHTTPServe 8000在页面的文件夹中运行。

问题:当我转到localhost:8000我的页面时,我看到了文本。意味着http服务器而不是将其解释为html页面将我页面的每个字符串包装到<p>标签中。

如果我开放源代码,我会得到:

<html> 
........
<body>
<p class="p1"><span class="s1">&lt;</span><b>html</b><span class="s2"> </span><span class="s3">lang</span><span class="s1">=</span><span class="s4">"en"</span><span class="s1">&gt;</span></p>
<p class="p2">    <span class="s1">&lt;</span><span class="s5"><b>head</b></span><span class="s1">&gt;</span></p>
<p class="p2">        <span class="s1">&lt;</span><span class="s5"><b>meta</b></span> <span class="s3">charset</span><span class="s1">=</span><span class="s4">"utf-8"</span><span class="s1">&gt;</span></p>
<p class="p3"><span class="s2">        </span>&lt;<span class="s5"><b>title</b></span>&gt;Backbone.js Todo App&lt;/<span class="s5"><b>title</b></span>&gt;</p>
<p class="p2">    <span class="s1">&lt;/</span><span class="s5"><b>head</b></span><span class="s1">&gt;</span></p>
<p class="p2">    <span class="s1">&lt;</span><span class="s5"><b>body</b></span><span class="s1">&gt;</span></p>
<p class="p3"><span class="s2">        </span>Hello, world.</p>
<p class="p3"><span class="Apple-converted-space">    </span>&lt;/<span class="s5"><b>body</b></span>&gt;</p>
<p class="p1"><span class="s1">&lt;/</span><b>html</b><span class="s1">&gt;</span></p>
</body>
</html>
4

3 回答 3

1

如果您在 TextEdit 中编辑页面,请确保打开“格式”菜单并选择“制作纯文本”。

纯文本

如果您在没有此选项的情况下保存为 HTML,TextEdit 将添加这些标签以保持文本文件的格式。

于 2014-07-21T14:02:59.963 回答
0

我刚刚在我的 Mac 上尝试过,但没有观察到类似的行为:我启动服务器的方式略有不同:

  • python -mSimpleHTTPServer 8000: m 和 SimpleHTTPServer 之间没有空格(用空格检查,相同的行为)
  • 我有 2 个文件:a.out 和 a.html 具有相同的内容:看起来 a.out 被下载,而 a.html 被显示(使用 chrome)

我的猜测是您的文件没有扩展名 .html 并且您的浏览器本身正在添加标签来显示它。

您可以尝试使用 curl 下载文件以确保:curl http://localhost:8000/a.out从终端

注意:我在带有 python 2.7.5 的 McBook air 上运行 MacOS 10.9.4

于 2014-07-21T13:47:26.387 回答
0

如果您的页面像您描述的那样显示为文本,那么这很可能意味着服务器没有content-type在其 HTTP 标头中使用正确的。 SimpleHTTPServer使用该模块mimetypes来确定content-type对大多数文件类型使用什么。

你可以自己检查一下:

>>> import mimetypes
>>> mimetypes.init()
>>> print mimetypes.types_map
...

或更具体地说

>>> print mimetypes.types_map['.html']
text/html

确保您的文件扩展名与mimetypes预期匹配。

于 2014-07-21T13:52:30.573 回答