http请求详解 防盗链技术

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服务器










你可能感兴趣的:(PHP自学之路)