【JavaWeb】Http协议

本文介绍了HTTP协议的基础知识,包括请求和响应的基本结构、HTTP版本的区别、请求方式的应用场景及常见响应状态码的意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Http协议入门

从一个简单的例子入手

(1)启动tomcat服务器;
(2)在浏览器(这里用的Chrome)输入URL:
http://localhost:8080/myweb/index.jsp(网页事先已经建好);
这里写图片描述
(3)右键审查元素(如果是火狐,需要使用firebug插件:右键->firebug->网络);
(4)点击Network -> Headers -> view source
这里写图片描述

这时,就可以看到浏览器的请求和服务器的响应详情。

http请求

  • 一个完整的HTTP请求包括:一个请求行、若干请求头、以及实体内容
GET /myweb/index.jsp HTTP/1.1  //请求行

/*
*多个请求头(多个key-value对象)
*/
Host: localhost:8080
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: zh-CN,zh;q=0.8
Cookie: JSESSIONID=27E506D9063D7F10CB3C4E1FE554E1EF

//一个空行

/*
*(可选)实体内容
*/

请求行

http协议版本:
  • http1.0:当前浏览器客户端与服务器端建立连接之后,只能发送一次请求,一次请求之后连接关闭。
  • http1.1:当前浏览器客户端与服务器端建立连接之后,可以在一次连接中发送多次请求。(基本都使用1.1)
请求资源:
  • URL: 统一资源定位符。http://localhost:8080/myweb/index.jsp。只能定位互联网资源。是URI 的子集。
  • URI: 统一资源标记符。/myweb/index.jsp。用于标记任何资源。可以是本地文件系统,局域网的资源,也可以是互联网资源。
请求方式:
  • 常见的请求方式: GET 、 POST、 HEAD、 TRACE、 PUT、 CONNECT 、DELETE 等 。

  • 常用的请求方式: , POST , DELETE , PUT , GET , 分别代表增删改查。

请求头

  • Accept:用于告诉服务器,客户机支持的数据类型
  • Accept-Charset:用于告诉服务器,客户机采用的编码格式
  • Accept-Encoding:用于告诉服务器,客户机支持数据压缩格式
  • Accept-Language:客户机的语言环境
  • Host:客户机通过这个头告诉服务器,想访问的主机名
  • If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间
  • Refer:客户机通过这个头告诉服务器,它是从哪个资源访问服务器的(防盗链)
  • User-Agent:客户机通过这个头告诉服务器,客户机的软件环境
  • Cookie:客户机通过这个头向服务器带数据
  • Connection:这个请求完了,是保持连接还是关闭
  • Range:断点下载
    • bytes=n1-n2,传输范围n1到n2字节
    • bytes=n-,传输web资源中第n个字节以后的所有内容
    • bytes=n,传输最后n个字节
  • Date: 请求发出的时间

实体内容

  • 只有POST提交的参数会放到实体内容中

http响应

  • 同样的,一个完整的HTTP响应包括:一个响应行、若干响应头、以及实体内容
HTTP/1.1 200 OK //响应行

/*
*若干个响应头(多个key-value对象)
*/
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 953
Date: Mon, 13 Feb 2017 07:04:33 GMT

//一个空行

/*
*(可选)实体内容
*/

响应行

http协议版本:
  • 同上;
状态码: 服务器处理请求的结果(状态):

这里写图片描述

状态描述:
  • 响应成功:OK
  • 找不到资源:Not Found
  • 等等

响应头

  • Location:这个头配合302状态码使用,用于告诉客户机找谁(location和302实现请求重定向)
  • Server:服务器通过这个头,告诉浏览器服务器的类型
  • Content-Encoding:服务器通过这个头,数据的压缩格式
    (相关java知识:GZIPOutputStream,包装流/底层流)
  • Content-Length:服务器通过这个头,告诉浏览器回送数据的长度
  • Content-Type:服务器通过这个头,告诉浏览器回送数据的类型
  • Last-Modified:服务器通过这个头,告诉浏览器当前资源的缓存时间
  • Refresh:服务器通过这个头,告诉浏览器隔多长时间刷新一次
  • Content-Disposition:服务器通过这个头,告诉浏览器以下载方式打开
  • Transfer-Encoding:服务器通过这个头,告诉浏览器数据的传送格式
  • Etag:缓存相关的头部,用于实时性要求高的系统
  • Expires:服务器通过这个头,告诉浏览器把回送的资源缓存多长时间,-1或0则不缓存
  • Cache-Control和Pragma:no-cache,服务器通过这两个头,也是控制浏览器不要缓存数据
  • Connection:断开连接/保持连接
  • Date:当前时间
  • Accept-Ranges:用来说明web服务器是否支持range。支持返回bytes;不支持返回none
  • Content-Range:制定了返回web资源的字节范围,格式:n1-n2/n_total
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值