[英]I can't pass the Content-Type header and the content is always 0 on POST python request
[英]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.