http协议:超文本传输协议
1、建立在tcp/ip协议基础上.
2、我们的web开发数据的传输都是依赖于http协议。
http协议的 http请求(request)
基本结构
请求行
消息头
消息体(实体内容)(若有数据需要处理)
在服务器端我们可以通过$_SERVER来获取我们需要的信息
HTTP_ACCEPT=image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, */*
HTTP_ACCEPT_LANGUAGE=zh-CN
HTTP_CACHE_CONTROL=no-cache
HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
HTTP_ACCEPT_ENCODING=gzip, deflate
HTTP_HOST=192.168.1.100
HTTP_CONNECTION=Keep-Alive
PATH=C:\Program Files\NVIDIA Corporation\PhysX\Common;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;D:\杞欢\Windows7Master;C:\myenv\mysql5\bin;d:\Windows7Master;C:;D:\Windows7Master;
SystemRoot=C:\windows
COMSPEC=C:\windows\system32\cmd.exe
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
WINDIR=C:\windows
SERVER_SIGNATURE=
SERVER_SOFTWARE=Apache/2.2.17 (Win32) PHP/5.3.5
SERVER_NAME=192.168.1.100
SERVER_ADDR=192.168.1.100
SERVER_PORT=80
REMOTE_ADDR=192.168.1.100 指的是访问页面的IP
DOCUMENT_ROOT=C:/myenv/apache/htdocs apach的主目录
[email protected]
SCRIPT_FILENAME=C:/myenv/apache/htdocs/RemoteSystemsTempFiles/mywork_http.php
REMOTE_PORT=1940
GATEWAY_INTERFACE=CGI/1.1
SERVER_PROTOCOL=HTTP/1.1
REQUEST_METHOD=GET
QUERY_STRING=
REQUEST_URI=/RemoteSystemsTempFiles/mywork_http.php 请求的资源名
SCRIPT_NAME=/RemoteSystemsTempFiles/mywork_http.php
PHP_SELF=/RemoteSystemsTempFiles/mywork_http.php
REQUEST_TIME=1386167388
http 请求有两种主要的方式
get / post
get和post的区别有哪些
都是向服务器发数据
1、安全性 get请求的数据会显示在地址栏上。
post请求的数据,放在http协议的消息体中。
2、从可以提交数据的大小来看,我们可以认为:
2.1 http协议本身并没有显示数据的大小。
2.2 浏览器在对get和post请求做显示,get 请求数据 2K+35 post没有显示。
2.3 get请求方便整理到收藏夹。
HTTP请求头信息:
GET /RemoteSystemsTempFiles/testb.php HTTP/1.1 (发送请求时get请求,资源目录是: /RemoteSystemsTempFiles/testb.php 用的HTTP协议时1.1版本)
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, */* (可以接收的资源类型)
Accept-Language: zh-CN (编码格式)
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate (压缩格式)
Host: localhost (主机名)
Connection: Keep-Alive
HTTP响应头信息:
HTTP/1.1 200 OK 200表示客户端请求成功
Date: Sat, 07 Dec 2013 03:02:14 GMT
Server: Apache/2.2.17 (Win32) PHP/5.3.5
X-Powered-By: PHP/5.3.5
Content-Length: 47 给浏览器回送的数据有47个字节
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Cache-Control: private 【缓存】
Content-Type: text/html 文档类型
点击查询
HTTP响应状态码:
202:成功接收亲戚,并处理完整个过程
302:为完成请求,客户端需要在做进一步的细化请求,(资源已经挪动了地址)
304:资源没有修改,不用重新获取(页面在本地有缓存文件,并且资源与服务器的资源相同(比如图片的时间,大小)则就在浏览器缓存中取。)
404:客户端请求有错误
500:服务器端出现错误
302 ,304码运用
当a页面中写下如下代码:
header("Loacation:http://www.sohu.com"); 此时返回给浏览器的响应头会有302码。
header可以往http响应头里写入内容
Loation可以指定访问该页面时,跳转到一个新页面。
值得注意的是:跳转是发生在客户端浏览器上,而不是发生在apache服务器