HTTP协议

Posted rain99-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议相关的知识,希望对你有一定的参考价值。

HTTP和HTTPS的区别

HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
HTTP 是不安全的,? HTTPS 是安全的
HTTP 标准端?是 80 ,? HTTPS 的标准端?是 443
在 OSI ?络模型中,HTTP ?作于应?层,? HTTPS ?作在传输层
HTTP ?需加密,? HTTPS 对传输的数据进?加密
HTTP ?需证书,? HTTPS 需要认证证书

请求包

一个http请求由三部分组成,分别是:请求?、请求头、请求正?。
技术图片

请求?

技术图片

请求?以?个?法符号开头,以空格分开,后?跟着请求的URI和协议的版本。
格式如下:Method Request-URI HTTP-Version CRLF

Method表?请求?法代码
Request-URI是?个统?资源标识符
HTTP-Version表?请求的HTTP协议版本
CRLF表?回车和换?(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。

常见请求方法

GET 请求获取Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头
PUT 请求服务器存储?个资源,并?Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

HEAD因其忽略响应正文而速度较快,在信息收集中常用于进行子域名枚举,目录枚举。
PUT与之相关的有IIS PUT漏洞。
OPTIONS用于获取服务器支持的请求方法,其响应头中的Allow表明支持的方法

请求头

Host: www.bilibili.com
Connection: close
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/81.0.4044.138 Safari/537.36
Accept: /
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: script
Referer: https://www.bilibili.com/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7
Cookie: _uuid=166DDD97-C6E6-BEA6-414B-D2

常见请求头

User-Agent:包含发出请求的?户信息。
Accept:Accept请求报头域?于指定客户端接受哪些类型的信息。//eg:Accept:image/gif,表明客户端希望接受GIF图象格式的资源;Accept:text/html,表明客户端希望接受html?本。
Referer:告诉服务器我是从哪个页?链接过来的
Cookie:?份凭证

UA会暴露用户访问时的设备信息,包括系统,浏览器等
Referer是浏览器加上的,验证Referer是防御URL跳转,CSRF请求/读取的方法之一

响应包

一个HTTP响应也是由三个部分组成,分别是:状态?、响应头、响应正?
技术图片

状态?

技术图片

状态?格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF

HTTP-Version表?服务器HTTP协议的版本
Status-Code表?服务器发回的响应状态代码
Reason-Phrase表?状态代码的?本描述。

常见的状态码

200 OK 客户端请求成功
301 Moved Permanently 永久重定向。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302 Found 临时重定向。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized 请求要求用户的身份认证。会弹窗要求输入用户名和密码
403 Forbidden 服务器收到请求,但是拒绝提供服务
404 Not Found 请求资源不存在
500 Internal Server Error 服务器发?不可预期的错误
503 Server Unavailable 服务器当前不能处理客户端的请求,?段时间后可能恢复正常

401 可用于钓鱼,欺骗用户名密码
403 有的网站直接访问返回403,这时候需要通过目录/文件爆破来正常访问网站https://blog.csdn.net/qq_36119192/article/details/89552338
404 同403,有的网站仅删除了首页,目录等仍存在,可通过目录/文件爆破进一步访问

响应头

Accept-Ranges: bytes
Cache-Control: max-age=315360000
Connection: Keep-Alive
Content-Length: 705
Content-Type: image/gif
Date: Sat, 01 Jun 2019 05:46:40 GMT
Etag: "2c1-4a6473f6030c0"
Expires: Tue, 29 May 2029 05:46:40 GMT
Last-Modified: Wed, 22 Jun 2011 06:40:43 GMT
Server: Apache

常见的响应头

Server Web服务器名称
Set-cookie 服务器向客户端发送的信息
Location 服务器通过这个头告诉浏览器去访问哪个页?,浏览器接收到这个请求后,通常会?刻访问Location头所
指向的页?,通过配合302状态码
Refresh 服务器通过这个告诉浏览器定时刷新浏览器

Server 会暴露服务器的容器和脚本语言版本
Location 未授权访问相关

以上是关于HTTP协议的主要内容,如果未能解决你的问题,请参考以下文章

怎么用http协议实现安卓数据

CPNtools协议建模安全分析---实例变迁标记

HTTP客户端代码片段

高效Web开发的10个jQuery代码片段

如何从一个片段导航到另一个片段?

这两个代码片段有啥区别?