分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

HTTP协议

发布时间:2023-09-06 01:45责任编辑:傅花花关键词:暂无标签

HTTP协议

http协议概述

Hypertext Transfer Protocol,超文本传输协议;
**协议双方*: 浏览器 和 服务器server;
通信规则规定了客户端发送给服务器的内容格式(请求协议request),也规定了服务器发送给客户端的内容格式(响应协议response);
http是基于请求/响应模式,请求一次响应一次, 不是时刻连接的;
http是无状态协议,服务器server无法区分客户端;
URL: 统一资源定位符,即网址:协议名://域名:端口/路径

请求协议

GET http1.1 # 请求方式key:value ??# 多个键值对\r\n ???????# 空行,区分请求体() ???# 具体的数据,针对POST方式,若果是GET请求,请求体为空,键值对数据会追加在路径后面,中间用?隔开一般情况下: ???地址栏url访问 ??GET ???<a href=""> ????GET ???form表单默认 ???GET# 1. 请求行描述客户端的请求方式、请求资源的名称、http协议的版本号。 例如: GET/BOOK/JAVA.HTML HTTP/1.1# 2. 请求头:Accept:用于告诉服务器,客户机支持的数据类型 ?(例如:‘Accept:text/html,image/*‘)Accept-Charset:用于告诉服务器,客户机采用的编码格式Accept-Encoding:用于告诉服务器,客户机支持的数据压缩格式Accept-Language:客户机语言环境Host:客户机通过这个服务器,想访问的主机名If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间Referer:客户机通过这个头告诉服务器,它(客户端)是从哪个资源来访问服务器的(防盗链)User-Agent:客户机通过这个头告诉服务器,客户机的软件环境(操作系统,浏览器版本等)Cookie:客户机通过这个头,将Coockie信息带给服务器Connection:告诉服务器,请求完成后,是否保持连接Date:告诉服务器,当前请求的时间# 3. 实体内容就是指浏览器端通过http协议发送给服务器的实体数据。例如:name=dylan&id=110(get请求时,通过url传给服务器的值。post请求时,通过表单发送给服务器的值)

响应协议

# 1. 响应首行HTTP/1.1 ?200 OK ??(协议的版本号是1.1 ?响应状态码为200 ?响应结果为 OK)# 2. 响应头信息 ???Response Headers ???Location:这个头配合302状态吗,用于告诉客户端找谁 ???Server:服务器通过这个头,告诉浏览器服务器的类型 ???Content-Encoding:告诉浏览器,服务器的数据压缩格式 ???Content-Length:告诉浏览器,回送数据的长度 ???Content-Type:告诉浏览器,回送数据的类型 ???Last-Modified:告诉浏览器当前资源缓存时间 ???Refresh:告诉浏览器,隔多长时间刷新 ???Content-Disposition:告诉浏览器以下载的方式打开数据。例如: context.Response.AddHeader("Content-Disposition","attachment:filename=aa.jpg"); ???????????????????????????????????????context.Response.WriteFile("aa.jpg"); ???????Transfer-Encoding:告诉浏览器,传送数据的编码格式 ???ETag:缓存相关的头(可以做到实时更新) ???Expries:告诉浏览器回送的资源缓存多长时间。如果是-1或者0,表示不缓存 ???Cache-Control:控制浏览器不要缓存数据 ??no-cache ???Pragma:控制浏览器不要缓存数据 ?????????no-cache ???Connection:响应完成后,是否断开连接。 ?close/Keep-Alive ???Date:告诉浏览器,服务器响应时间# 3. 空行\r\n# 4. 响应体响应包含浏览器能够解析的静态内容,例如:html,纯文本,图片等等信息# 状态码:200 请求已成功,请求所希望的响应头或数据体将随此响应返回;404 请求失败,请求所希望得到的资源未被在服务器上发现;500 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。302 请求的资源现在临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。304 如果客户端发送了一个带条件的GET请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。该响应必须包含以下的头信息:Date,除非这个服务器没有时钟。假如没有时钟的服务器也遵守这些规则,那么代理服务器以及客户端可以自行将 Date 字段添加到接收到的响应头中去(正如RFC2068中规定的一样),缓存机制将会正常工作。

状态码304:原理详见下图

HTTP协议

原文地址:https://www.cnblogs.com/fqh202/p/8529057.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved