繁体   English   中英

当Python可以时,为什么不能仅将Content-Type:text / html添加到文本文件中?

[英]Why can't I just add Content-Type:text/html to a text file when Python can?

对于大多数人来说,这似乎是一个愚蠢的问题,但是我为什么不能这样做:

Content-Type:text/html

<html>
<head><title>Hello</title></head>
<body>
<h1>Hello, World!</h1>
</body>
</html>

在名为test.txt的文件中,并在Python脚本可以执行以下操作的情况下以html格式在浏览器中将其打开:

#!/usr/bin/python

print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! This is my first CGI program</h2>'
print '</body>'
print '</html>'

一切正常。 我看不出有什么区别,它们都在浏览器请求的信息的顶部打印Content-Type:text/html

HTTP响应由标头和正文组成,并由收到的第一个\\r\\n\\r\\n分隔。 到Web服务器发送普通文件时,它已经发送了所有标头和分隔符。
但是,运行脚本时,标头不会自动发送。

因此,在第一种情况下,您的网络服务器会在发送文件内容之前从扩展名中猜测内容类型,并发送适当的标头。 在第二个脚本中,该脚本发送了一个内容类型的重写头。 然后,由网络服务器决定如何处理此问题,即插入其他标准的HTTP标头。

编辑:Apache使用mod_mine和/etc/mime.types将文件扩展名映射到Content-Types。 对于可能没有扩展名的任何内容,它可能默认为text / plain。

浏览器可能只有在没有Content-Type的情况下才能使用该扩展程序。

假定普通文件仅包含数据,并且标头由Web服务器生成,而cgi脚本则应/允许生成自己的标头。

当浏览器直接从文件读取时,它们并没有在寻找http标头。 当python脚本回答浏览器的http请求时,情况有所不同,并且浏览器期望第一行是http标头,然后它将按照您的期望进行解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM