Servlet客户端HTTP请求
当浏览器发送请求到服务器的时候,这个请求是不能被直接读取的,请求中包含了非常多的信息,而需要被读取的,只是请求中的一部分。
如图
我们可以看一下请求头有哪些常用的信息,以及它们的作用是什么
Accept-Charset
这个头信息告诉服务器处理表单数据所需要使用的字符集。
我们知道,在<form>
中有一个属性叫做accept-charset
,就是用来设置请求头中Accept-Charset
属性的值的。
常用的值有ISO-8859-1
、UTF-8
。
Connection
我们知道HTTP协议采用“请求-应答”
模式,当使用普通模式,即非Keep-Alive
模式时,每个请求/应答客户和服务器都要新建一个连接,完成 之后立即断开连接(HTTP协议为无连接的协议)
当使用Keep-Alive
模式(又称持久连接、连接重用)时,Keep-Alive
功能使客户端到服 务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive
功能避免了建立或者重新建立连接。
Cookie
对Cookie
大家应该都非常熟悉了,这个信息就是用来存放Cookie
,并传给服务器的。
If-Modified-Since&If-Unmodified-Since
这两个头信息的值都是Date
格式,用来告诉服务器所需要的文件的日期范围。
如果服务器上没有更新或者更旧的文件,就会返回一个304
的状态码,表示文件并没有改动,可以直接从缓存中加载。
User-Agent
这个信息记录了发出请求的客户端的信息,包含了浏览器类型、版本等信息。通过这个信息可以做浏览器类型判断。
Servlet服务器HTTP响应
当客户端发送了一个请求给服务器,服务器也会返回一个响应给客户端,同样的,这个响应中也包含了除数据之外的很多信息。
如图
Control-Allow-Origin
Access-Control-Allow-Origin
是HTML5中定义的一种解决资源跨域的策略。
如果设置为我们自己当前页面的域名时,浏览器才会允许我们拿到这个响应的数据,并进行下一步的处理。当设置为*
的时候,表示该资源谁都可以用。
Content-Type
这个头信息告诉浏览器这个响应的数据格式及编码类型。
常用值为application/json;charset=utf-8
Server
通过服务器的响应头,我们还能知道服务器的类型。
Set-Cookie
Web服务器通过传送HTTP 包头中的Set-Cookie 消息把一个cookie 发送到用户的浏览器中。
完整的Set-cookie
格式如下
Set-Cookie:customer=huangxp; path=/foo; domain=.ibm.com; expires= Wednesday, 19-OCT-05 23:12:40 GMT; [secure]
path=/foo
控制哪些访问能够触发cookie 的发送。如果没有指定path,cookie会在所有对此站点的HTTP传送时发送。
如果path=/directory,只有访问/directory 下面的网页时,cookie才被发送。
domain=.ibm.com
指定cookie被发送到哪台计算机上。
正常情况下,cookie只被送回最初向用户发送cookie的计算机。如果domain 被设为空,domain就被设置为和提供cookie 的Web 服务器相同。如果domain不为空,并且它的值又和提供cookie的Web服务器域名不符,这个Cookie将被忽略。
expires= Wednesday, 19-OCT-05 23:12:40 GMT
指定cookie 失效的时间。如果没有指定失效时间,这个cookie 就不会被写入计算机的硬盘上,并且只持续到这次会话结束。
secure
如果secure 这个词被作为Set-Cookie 头的一部分,那么cookie 只能通过安全通道传输(目前即SSL通道)。否则,浏览器将忽略此Cookie。
最后
这么多的属性留给我们去使用,去交互数据,它们就像一个个的座位,Servlet的HTTP请求就像一辆在客户端和服务器之间往返的大巴。
一个复杂的Web应用正是因为这些大巴组成的交通网才能畅通无阻。
下一章——大巴司机HttpServletResponse
和HttpServletRequest
。