OSX上的python -m SimpleHttpServer [port]

时间:2014-07-21 13:34:55

标签: python html macos simplehttpserver

我创建了最简单的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>

3 个答案:

答案 0 :(得分:1)

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

Plain Text

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

答案 1 :(得分:0)

我刚尝试使用我的Mac而且我没有观察到类似的行为:我的启动服务器略有不同:

  • python -mSimpleHTTPServer 8000:m和SimpleHTTPServer之间没有空格(用空格检查,行为相同)
  • 我有两个文件: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

答案 2 :(得分:0)

如果您的页面正如您所描述的那样显示为文本,则很可能意味着服务器在其HTTP标头中未使用正确的content-typeSimpleHTTPServer使用模块mimetypes来确定大多数文件类型使用的content-type

您可以自己查看:

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

或更具体地说

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

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