WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议。
HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议集中的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式。
HTTP协议的版本
HTTP/1.0、HTTP/1.1、HTTP-NG
1.简述HTTP 1.1与HTTP 1.0的区别
eg1:
HTTP1.0中客户端与WEB服务器建立连接后,只能获得一个 web资源
HTTP1.1中允许客户端与WEB服务器建立连接后,在一个连接获取多个 web资源
eg2:
在同一个tcp的连接中可以传送多个HTTP请求和响应.
多个请求和响应可以重叠,多个请求和响应可以同时进行.
更加多的请求头和响应头(比如HTTP1.0没有host的字段).
总之,在 HTTP/1.0 中,大多实现为每个请求/响应交换使用新的连接。在 HTTP/1.1 中,一个连接可用于一次或多次请求/响应交换,尽管连接可能由于各种原因被关闭.这是他们之间最大的分别.
多个请求和响应可以重叠,多个请求和响应可以同时进行.
更加多的请求头和响应头(比如HTTP1.0没有host的字段).
总之,在 HTTP/1.0 中,大多实现为每个请求/响应交换使用新的连接。在 HTTP/1.1 中,一个连接可用于一次或多次请求/响应交换,尽管连接可能由于各种原因被关闭.这是他们之间最大的分别.
2 请描述HTTP请求消息和HTTP响应消息的组成结构
HTTP请求消息
GET /books/java.html HTTP/1.1 <----- 请求行
Accept: */* <----- 消息头
Accept-Language: en-us ..............
Connection: Keep-Alive
Host: localhost
Referer:
http://localhost/links.asp ...............
User-Agent: Mozilla/4.0
Accept-Encoding: gzip, deflate <----- 消息头
<----- 一个空行
HTTP响应消息 <----- 状态行
HTTP/1.1 200 OK <----- 多个消息头
Server: Microsoft-IIS/5.0
Date: Thu, 13 Jul 2000 05:46:53 GMT
Content-Length: 2291
Content-Type: text/html
Cache-control: private
<----- 一个空行
<HTML> <----- 实体部分
<BODY>
……
3.浏览器分别在哪些情况下使用GET方式和POST方式访问WEB服务器(GET方式和POST方式的区别)?如果浏览器传递给WEB服务器的参数内容超过1K,应该使用那种方式发送请求消息? (POST)
get会把提交的信息显示在地址栏上,post不会
get对于敏感信息不安全 post安全
get 提交数据体积受地址栏的限制, 一般在1KB以下. post没有,可以提交大体积数据
get将提交信息封装在请求行,也就是http消息头之前. post 数据体中,也就是http消息头之后的空行后
对于服务端而言:
表单尽量用post提交,因为涉及到编码问题 tomcat默认的解码方式是 iso8859-1
对于post提交的中文。 在服务器端可以直接用setCharacterEncoding("gbk")就可以解决
对于get提交的中文。 在服务器端只能通过 iso8859-1将数据解码一次,在通过指定码表如GBK进行解码
4.200、206、302、304、401、404和500等响应状态码所表示的意义。
200: 表示一切正常,返回的是正常请求结果
206: (部分内容) 客户发送了一个带Rang头(要求服务器只返回资源/文档中的部分内容)的GET请求,服务器按要求完成了这个请求
302/307(临时重定向): 指出被请求的文档已经被临时移到别处,此文档的新URL在LOCATION响应头中给出.
304: (未修改)表示客户机缓存的版本是最新的,客户应该继续使用它
401:(未授权) 表示客户机访问的是一个受口令和密码保护的页面,结合使用一个WWW - Authenticate 响应头提示客户机应重新发出一个带 Authorization头的请求消息
404: (找不到资源) 服务器上不存在客户机请求的资源
500: (内部服务器错误) 服务器端的 CGI,ASP,JSP等程序发生错误.
5.请列举三种禁止浏览器缓存的头字段,并写出相应的设置值
请求头:
If -Modified -Since: 客户端通过这个头告诉服务器,资源缓存时间
响应头:
Cache - control : no - cache 不要缓存数据
Pragma: no - cache
Etag: 缓存响应的头
Expires: 服务器通过这个头,告诉浏览器把回送的资源缓存多长时间 -1,0不缓存
6.如果WEB服务器端程序想根据访问者所使用的浏览器国家语言版本来返回该国家语言的网页文档内容,应该检查浏览器发送的哪个请求头字段来识别其国家语言信息?
Content-Language: zh-cn
7.请根据自己的理解描述Referer头字段的作用
客户端通过这个头告诉服务器,它是从哪个资源来访问服务器的(防盗链)
8.请根据自己的理解描述Content-Type头字段的作用。如果将一个Word文档(文件扩展名为.doc)放置在Tomcat服务器的根目录中,要让IE浏览器访问这个Word文档时自动打开Word程序,在IE浏览器所在的客户机和Tomcat服务器上分别应具备什么条件。
Content-Type: 内容类型.
Content-Type: application/msword
常用请求头:
常用的:Accept
Accept-Charset
Accept-Encoding
Accept-Language
Referer
Content-Type
Content-Length
Accept:浏览器课接受的MIME类型
Accept-Charset:浏览器通过这个头告诉服务器 ,支持哪种字符集
Accept-Encoding:浏览器能够进行解码的数据编码方式
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。可以在浏览器中进行设置。
Host:初始URL中的主机和端口
Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
Content-Type:内容类型
Content-Length:表示请求消息正文的长度
Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP1.1需要进行持久连接。
Cookie:重要消息请求头信息之一。(单独写)