我这样做了,一切都和以前一样。这让我想知道:头文件是什么? 何时使用它们? (从HTML角度和其他一些(?)角度)以及为什么我可以删除我的标头?
<img src>
标签引用它时,通常仍能正常工作。这是由于当你使用<img>
时,浏览器知道它将会获取一张图片,并且忽略你说它实际上是HTML的说法。它接着要 "嗅探" 文件的内容来判断它是否看起来像一个 JPEG、GIF、PNG 或者其他它了解的图像类型,以便确定如何显示它。浏览器这么做是因为有太多写得很差的网站忘了发送头信息。哎呀!header('Content-Type: image/jpeg')
;对于HTML页面,通常可以不需要。header('Content-Type', 'image/jpeg')
会导致错误。正确的语法是 header('Content-Type: image/jpeg')
。 - Christopher TarquiniHTTP头部不仅限于浏览器,它是HTTP协议的一部分。
请求页面或其他资源(如图像)将导致客户端(例如互联网浏览器)发送一个请求头。这可能包含语言(Accept-Language)的头信息。
HTTP请求的第一行格式为METHOD RESOURCE HTTP/VERSION
,例如:GET /resource HTTP/1.0
。
HTTP/1.1需要Host-header。以下是HTTP/1.1请求示例:
GET / HTTP/1.1
Host: example.com
服务器至少会响应状态码: HTTP/1.1 200 OK
大多数服务器都会发送其他头部信息,常见的头部信息包括:Content-Type
、Date
、Server
和 Content-Length
。
以下是一个请求的示例(原始数据):
$ nc example.com 80
GET / HTTP/1.0
HTTP/1.1 200 OK
Date: Sat, 11 Sep 2010 19:12:13 GMT
Server: Apache
Last-Modified: Fri, 30 Jul 2010 15:30:18 GMT
ETag: "573c1-254-48c9c87349680"
Accept-Ranges: bytes
Content-Length: 596
Connection: close
Content-Type: text/html; charset=UTF-8
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<TITLE>Example Web Page</TITLE>
</HEAD>
<body>
<p>You have reached this web page by typing "example.com",
"example.net","example.org"
or "example.edu" into your web browser.</p>
<p>These domain names are reserved for use in documentation and are not available
for registration. See <a href="http://www.rfc-editor.org/rfc/rfc2606.txt">RFC
2606</a>, Section 3.</p>
</BODY>
</HTML>
客户端(网络浏览器)是否解析标头取决于它自己。所有现代网络浏览器都会解析 Content-Type
标头,并使用它来确定如何显示资源(是HTML页面、图像、文本文件还是其他内容)。浏览器会忽略 Server
标头,服务器使用它来识别自己。但某些爬虫可能会将其用于统计。Content-Type
字段无效,行为未定义(尽管通常使用最后一个定义的字段值)。
此 Wikipedia 文章 包含带有描述的标头列表。Server
是" 应该是 "The Server
头部[字段]"。多个
Content-Type`字段无效,请参见修改后的答案。 - Lekensteyn头部信息不是PHP独有的,而是HTTP传输数据的一种方式。
在php中,header()
函数允许你设置这些头部信息来适应你的代码使用情况。如果你的代码生成的是像jpg这样的图像而不是文本(比如HTML或JavaScript,需要被用户的浏览器解释),那么你就要将对应的头信息设置为image/jpeg
。现在你可以将这个脚本用在其他地方,就像静态图像一样:
<img src="static.jpg"/>
现在,如果你想生成一个图像的缩略图,并希望动态访问它,你可以编写一个返回jpeg格式图像的php脚本,并像下面这样使用它:
<img src="thumb.php?s=64&name=static.jpg"/>"
thumb.php
文件将根据静态图片static.jpg
生成一个大小为64x64的缩略图(使用HTTP头信息Content-Type: image/jpeg
)。
当然,这仅仅是header()
函数的众多用途之一。欲了解更多信息,请参阅维基百科:超文本传输协议,HTTP头信息列表,或者如果你足够勇敢,可以查看rfc文档。
<?php header('Content-type:image/jpeg'); ?> <img src="kid.jpg">
,如果我在浏览器上打开页面,我会得到一个破碎的小图标,而不是图片。为什么会这样呢?我认为img标签是HTML内容,但我改变了生成的内容类型为图像,不是吗? - user1906399头文件包含指令,用于告知浏览器以特定的方式呈现内容。例如,指定页面语言/字符集使用或告诉浏览器正在输出的数据是原始图像数据,因此要将其处理为图像(而不是常规文本),或者可以像header("Location: somepage.html")一样,让浏览器重定向到另一个页面。基本上,您会在正常的<head>...</head>
标记中找到许多(以及更多)类似的内容。
HTTP请求/响应头(在您的情况下是响应),是与响应一起发送的元数据(更准确地说,在数据之前)。
它可能包含诸如缓存指令、数据类型和大小、上次修改日期等信息。您可以在这里看到HTTP头列表。
我们应该区分传入头部(php作为Web服务器页面)和传出头部(php作为Web客户端使用类似cURL库的东西)。
头部实际上只是另一个名称-值对的集合,随着每个HTTP“请求”事务一起通过电线传输。正文是服务器发送回来的...东西,服务器还向客户端发送响应头。
每个头部中的名称-值对的含义由HTTP协议和其他标准定义,但客户端和服务器也可以将头部用于其他用途。
headers()用于设置响应头名称-值对,而getallheaders()用于检索发送到php服务器页面的请求头。
Content-Type
和Content-Length
是HTTP头。 - Femaref