在OSX上使用python -m SimpleHttpServer [port]
我创建了一个最简单的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"><</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">></span></p>
<p class="p2"> <span class="s1"><</span><span class="s5"><b>head</b></span><span class="s1">></span></p>
<p class="p2"> <span class="s1"><</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">></span></p>
<p class="p3"><span class="s2"> </span><<span class="s5"><b>title</b></span>>Backbone.js Todo App</<span class="s5"><b>title</b></span>></p>
<p class="p2"> <span class="s1"></</span><span class="s5"><b>head</b></span><span class="s1">></span></p>
<p class="p2"> <span class="s1"><</span><span class="s5"><b>body</b></span><span class="s1">></span></p>
<p class="p3"><span class="s2"> </span>Hello, world.</p>
<p class="p3"><span class="Apple-converted-space"> </span></<span class="s5"><b>body</b></span>></p>
<p class="p1"><span class="s1"></</span><b>html</b><span class="s1">></span></p>
</body>
</html>
3 个回答
0
如果你的页面显示的内容只是一些文本,就像你描述的那样,这很可能是因为服务器在它的HTTP头信息中没有使用正确的content-type
。SimpleHTTPServer
使用一个叫mimetypes
的模块来判断大多数文件类型应该使用什么content-type
。
你可以自己检查一下:
>>> import mimetypes
>>> mimetypes.init()
>>> print mimetypes.types_map
...
或者更具体一点
>>> print mimetypes.types_map['.html']
text/html
确保你的文件扩展名和mimetypes
所期望的匹配。
0
我刚在我的Mac上试了一下,发现没有出现类似的情况:我启动服务器的方式稍微不同:
python -mSimpleHTTPServer 8000
: 这里的m和SimpleHTTPServer之间没有空格(我试过加空格,结果一样)- 我有两个文件:a.out和a.html,内容是一样的:看起来a.out被下载了,而a.html则在浏览器中显示出来(我用的是Chrome)
我猜你的文件没有.html这个扩展名,可能是你的浏览器自己加了标签来显示它。
你可以试着用curl下载这个文件来确认一下:在终端输入 curl http://localhost:8000/a.out
注意:我在一台装有MacOS 10.9.4的MacBook Air上运行,使用的是python 2.7.5
1
如果你在用TextEdit编辑你的页面,记得打开“格式”菜单,选择“转换为纯文本”。
如果你在没有选择这个选项的情况下保存为HTML,TextEdit会自动加上一些标签,以保持你的文本格式。