HTTP协议

HTTP协议

大家好,又见面了,我是全栈君。

1.概述

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。

全部的WWW文件都必须遵守这个标准。

设计HTTP最初的目的是为了提供一种公布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),

这成为了HTTP超文本传输协议标准架构的发展根基。

Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网project工作小组(Internet Engineering Task Force )共同合作研究。

终于公布了一系列的RFC。当中著名的RFC 2616定义了HTTP 1.1。

2.HTTP1.0、HTTP1.1差别

 HTTP1.0:client与webserver建立连接后。仅仅能获得一个web资源

 HTTP1.1:在一个连接上获取多个web资源

 是用telnet能够观察到HTTP1.o连接一次后须要又一次再去连接、而1.1就不会

3.HTTP请求

 client连上server后,向server请求某个web资源,称之为client向server发送了一个http请求。一个完整的http请求包含例如以下内容:

 一个请求行、若干请求头、以及实体内容;例如以下所看到的:

 Get http://www.kk.com:8080//project/user/data_list.jsp HTTP/1.1

 Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

 用于告诉serverclient支持的数据类型

 Accept-Encoding:gzip,deflate,sdch

 告诉serverclient支持的数据压缩格式

 Accept-Language:zh-CN,zh;q=0.8

 client的语言环境

 Connection:close/keep-alive

 意思是这个请求完毕后。是保持连接还是关闭连接

 Cookie:JSESSIONID=2D038DE401B05C06B9C465AD52BA01E3

 Host:www.kk.com:8080

 client通过这个头告诉server、想訪问的主机名

 Referer:http://www.kk.com:8080/

 client通过这个头告诉server。它是从哪个资源来訪问server的(防盗链)

 User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36

 client通过这个头告诉server。client软件环境

4.HTTP响应

 一个HTTP响应代表server向client回送的数据,它包含:

 一个状态行、若干消息头、以及实体内容。

 响应 HTTP/1.1 200 OK
 Server Apache-Coyote/1.1
 Content-Type text/html;charset=UTF-8
 Content-Length 1342
 Date Sun, 07 Jun 2015 07:11:44 GMT

 状态行:

 格式:HTTP/版本 状态码 原因描写叙述<CRLF>

          举例:HTTP/1.1 200 OK

 状态码用于表示server对请求的处理结果。它是一个三位的十进制数。响应状态码分为5类。例如以下所看到的:

 

状态码 含义
100~199 表示成功接收请求,要求client继续提交下一次请求才干完毕整个处理结果
200~299 表示成功接收请求并已完毕整个处理过程 经常使用200
300~399 为完毕请求,客户需进一步细化请求,比如:请求的资源已经移动到一个新地址。经常使用302、307和304
302、3067:资源存在却没有权限訪问
304:资源转发给别人
400~499 client的请求错误,经常使用404 403
500~599 server端出现错误,经常使用500

 HTTP请求中的经常使用响应头:

 Location:http://www.kk.com/index.jsp 配合302状态码使用。用于快速客户找谁

 server:apache tomcat 告诉浏览器服务器类型

 Content-Encoding: gzip  告诉client数据的压缩格式

 Content-Length:90 告诉浏览器回送数据的长度

 Content-Language:zh-cn  告诉浏览器语言

 Content-Type:text/html; charset=UTF-8 告诉浏览器回送数据的类型 

 Last-Modified:Tue,11 Jul 2000 18:00:00 GMT 告诉浏览器当前缓存时间

 Refresh:1;url=htttp://www.google.com.hk 告诉浏览器隔多长时间刷新一次

 Content-Dispostion:attachment;filename=test.zip 告诉浏览器下面载的方式打开数据

 Transfer-Encoding:chunked 告诉浏览器数据的传递格式

 Set-Cookie:SS=Q0=5LBnQ;path=/search 

 ETag:W/”7777-123423238″ 缓存消息的头

 Expires:-1 告诉浏览器把回送的资源缓存多长时间,-1或0表示不缓存

 Cache-Control:no-cache 

 Pragma:no-cache

 通过以上两个头,控制浏览器不缓存数据

 Connection:close/Keep-Alive

 Date:Tue,11 Jul 2000 18:00:00 GMT

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116404.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月21日 下午8:00
下一篇 2022年1月21日 下午9:00


相关推荐

  • 程序员日记

    程序员日记混迹程序圈yi

    2022年5月25日
    44
  • RRT基本概念

    RRT基本概念原文地址快速探索随机树 RRT 是一种通过随机构建空间填充树来有效搜索非凸 高维空间的算法 树是从搜索空间中随机抽取的样本逐步构建的 并且本质上倾向于朝向大部分未探测区域生长 RRT 由 StevenM LaValle 和 JamesJ KuffnerJr 1 2 开发 它们可以轻松处理障碍物和差分约束 非完整和动力学 的问题 并被广泛应用于自主机器人运动规划 RRT 可以被看作是一种为

    2026年3月17日
    1
  • vci驱动安装_deviceiocontrol函数

    vci驱动安装_deviceiocontrol函数1.获取所有的驱动器利用函数GetLogicalDriveStringsTheGetLogicalDriveStringsfunctionfillsabufferwithstringsthatspecifyvaliddrivesinthesystem.DWORDGetLogicalDriveStrings(DWORDnBufferLength

    2025年9月25日
    8
  • MacOs12Macbookpro读写NTFS

    MacOs12Macbookpro读写NTFS新买了MacbookProM1Pro,系统是macOS12.0,默认可以NTFS格式的读移动硬盘(U盘),但是不能写brewinstallntfs-3g出现下列错误:Error:ntfs-3ghasbeendisabledbecauseitrequiresFUSE!正确的安装方法如下:brewtapgromgit/homebrew-fusebrewinstall–caskmacfusebrewinstallntfs-3g-mac如何使用呢?

    2022年6月22日
    66
  • wing是什么_计算二叉树的深度和叶子结点数

    wing是什么_计算二叉树的深度和叶子结点数设一个 n 个节点的二叉树 tree 的中序遍历为(1,2,3,…,n),其中数字 1,2,3,…,n 为节点编号。每个节点都有一个分数(均为正整数),记第 i 个节点的分数为 di,tree 及它的每个子树都有一个加分,任一棵子树 subtree(也包含 tree 本身)的加分计算方法如下:subtree的左子树的加分 × subtree的右子树的加分 + subtree的根的分数若某个子树为空,规定其加分为 1。叶子的加分就是叶节点本身的分数,不考虑它的空子树。试求一棵符合中序遍历为(1,2,

    2022年8月9日
    10
  • 模板引擎?看这一篇就懂了

    模板引擎?看这一篇就懂了概念模板引擎可以让 网站 程序实现界面与数据分离 业务代码与逻辑代码的分离 这就大大提升了开发效率 良好的设计也使得代码重用变得更加容易 光看生硬的概念没有用 接下来我来给大家详细解释 这模板引擎究竟是何物 假设现在你打开电脑浏览器 进入某宝的网站 然后输入 笔记本 唰的一下页面上就出现了琳琅满目的商品 让你是应接不暇 然后你又输入了 辣条 一下子页面上又是不一样的商品了 这个时候 疑问就产生了 页面上的这些商品究竟是直接写在页面上的还是实时渲染的呢 毫无疑问 这些展示的商品肯定是实时渲染出

    2026年3月19日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号