一. URL格式
HTP :\ host [ : port ] [ ABS _ path ] [ : parameters ]? query]#fragment
示例: http://www.imail tone.com :80/web application1/web form1. aspx? name=汤姆; age=20#resume
http表示使用HTTP协议标识网络资源。
host表示合法的互联网主机域名或IP地址。
port用于表示在传输层交换信息的进程端口号,http协议的缺省端口号为80。 当然,默认端口号因协议而异。
abs_path指定请求资源的统一资源定位符(uri )。
参数用于指定特殊参数的选项。
? query是可选的,用于将参数传递到动态网页(使用PHP/JSP等创建的网页)。 可以有多个参数,用“”符号分隔,每个参数的键值之间用“=”分隔。
可以这样分析URL地址(python )
导入urlparse
lis=urlparse.urlparse(url )
URL=' http://zh.Wikipedia.org :80/wiki/special 3360 search? search=铁路go=Go '
根据上述格式完全解析了URL地址
http是协议;
zh.wikipedia.org,服务器;
80是HTTP协议的默认端口。
/wiki/Special:Search服务器上包含资源的目录的路径
query=' search=xccxfaxc2xb7go=go '是动态网页的查询
二.服务器通过HTTP与浏览器的交互
(1) http请求
客户端通过发送http请求向服务器请求访问资源
http要求由要求行、信息标题、要求正文3部分构成。
请求行的格式如下:
method request-uri http-version crlf
第一个参数方法符号、详细的方法如下所示
第二个参数是请求统一资源定位符(uri )
第三个参数表示协议的版本
第四个是换行符
这四个部分由空格分隔,除末尾外,其他三个部分不能使用CR或LF字符
例如get/tmp.htmlhttp/1.1(crlf ) )。
)2) http请求方法
举几个例子吧。
GET方法:通过在浏览器地址栏中输入网址访问网页时,浏览器使用GET方法从服务中获取资源。
例如GET Request-URL HTTP/1.1
POST方法:此方法用于向服务器发送请求。 此方法要求服务器接收附加到请求的数据,并且经常用于发送表单数据
例如,如post/login.JSPhttp/1.1(crlf )
HTML 文档中,书写get和post,不区分大小写,但HTTP协议中的GET和POST只能是大写形式。
头方法:头方法与GET方法几乎相同。 不同之处在于,HEAD方法只是请求消息标头,而不是完整的内容。
通过这种方法,可以获得由Request-URI标识的资源的信息,而无需传输整个资源的内容。
(3) HTTP响应
当接收并解释请求消息时,服务器返回HTTP响应消息。
与HTTP请求一样,HTTP响应也是状态行,消息报头,相应正文。
p>状态行由协议版本,数字形式的状态代码,相应的状态描述组成,各元素之间以空格分隔,除了结尾的CRLF(回车换行)序列外,不允许出现CR或LF字符。格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
HTTP-Version表示服务器HTTP协议的版本,Status-Code表示服务器发回的响应代码,Reason-Phrase表示状态代码的文本描述,CRLF表示回车换行。
Status-Code(状态代码):由三位数字组成,表示请求是否被理解或者满足;
状态代码的第一个数字代表的响应的类别:
1xx:指示信息——表示请求已接收,继续处理
2xx:成功——表示请求已经被成功接收,理解,接受
3xx:重定向——要完成请求必须进行更进一步的操作
4xx:客户端错误——请求有语法错误或请求无法实现
5xx:服务器端错误——服务器未能实现合法的请求
Reason-Phrase(状态描述):关于状态代码的简短文本描述;
例如:
HTTP/1.1 200 OK (CRLF)
参考资料:
圣骑士Wind的博客