HTTP、Cookie

我们在登录网站时,常常有一个“记住我”的选项,给它打上勾,下次就能免密登录了,这是怎么实现的呢🤔

解答这个问题之前,我们需要先了解HTTP。

HTTP的请求方式

常用的:

GET:请求从服务器获取资源

HEAD:类似于GET请求,只不过不会返回实体数据,只获取表头

POST:服务器提交数据

PUT:替换服务器的内容

不常用的:

DELETE:请求服务器删除指定的资源

TRACE:对链路进行测试或诊断

OPTIONS:列出可对资源实行的操作方法,Allow字段里返回

CONNECT:要求服务器和另一台服务器建立连接,充当代理

其他:MKCOL、COPY、MOV、LOCK、PATCH等

最常见的还是GET和POST

GET方法的作用在于获取资源。它可以用于URL查询字符串的形式向所请求的资源发送参数。这使用户可将一个包含动态资源的URL标注为书签,用户自己或其他用户随后可重复利用该书签来获取等价的资源(作用与标注为书签的搜索查询相似)。URL会带有请求的内容,显示在屏幕上(即浏览器地址栏内),并被记录在许多地方,如浏览器的历史记录和Web服务器的访问日志中。如果单击外部链接,还可以用Referer消息头将它们传送到其他站点。因此,请勿使用查询字符传送任何敏感信息。

POST方法的主要作用是执行操作。使用这个方法可以在URL查询字符申与消息主体中发送请求参数。尽管仍然可以将URL标注为书签,但书签中并不包含消息主体发送的任何参数。许多维护URL日志的位置及Referer消息头也将这些参数排除在外。因为POST方法旨在执行操作,如果用户单击浏览器上的“后退”按钮,返回一个使用这种方法访问的页面,那么浏览器不会自动重新发送请求,而是就即将发生的操作向用户发出带告。这样做可防止用户无意中多次执行同一个操作。因此,在执行一些操作时必须使用POST请求。

HTTP请求

每个HTTP请求的第一行由3个以空格间隔的项目组成,分别是请求方式、请求URLHTTP协议版本

Accept表示浏览器支持的 MIME 类型;

关于MIME类型可见blog.csdn.net/huahao1989/article/details/107746738

Referer指从哪个URL发出的请求,或者说是从哪里跳转过来的。

Accept-Language 后面跟浏览器所支持的语言

UserAgent是浏览器客户端软件相关的信息。另外再提一下,我在翻HTTP请求的时候,发现大多数浏览器都带这个Mozilla前缀,难道它们都跟火狐有什么牵连🤔,其实这是一个历史问题,可参考知乎用户码农翻身的回答:https://www.zhihu.com/question/19553117/answer/2900188991

Host消息头用于指定出现在被访问的完整URL中的主机名称。

Content-Length消息头规定消息主体的字节长度。

Connection表示持久的客户端与服务连接            

Transfer-Encoding消息头指定为方便其通过HTTP传输而对消息主体使用的任何编码。如果使用这个消息头,通常是用它指定了编码

Cookie消息头用于提交服务器向客户端发布的其他参数

更多消息头含义可查询相关资料。

HTTP响应

每个HTTP响应的第一行由3个以空格间隔的项目组成,分别为HTTP协议版本、表示请求结果的数字状态码、一段文本形式的短语用于描述响应状态

Server指明所使用的Web服务器软件。有时还包括其他信息,如所安装的模块和服务器操作系统。其中包含的信息可能并不准确

Content-Type消息头示这个消息主体中包含一个HTML文档。

Date表示消息发送的时间,缓存在评估响应的新鲜度时要用到。

关于状态码:

每条HTTP响应消息都必须在第一行中包含一个状态码,说明请求的结果。根据代码的第一位数字,可将状态码分为以下5类。

1xx -提供信息。

2xx—请求被成功提交。

3xx—客户端被重定向到其他资源。

4xx -请求包含某种错误。

5xx—服务器执行请求时遇到错误。

下面列出渗透测试员在攻击Web应用程序时最有可能遇到的状态码及其相关的原因短语。

100 Continue。当客户端提交一个包含主体的请求时.将发送这个响应。该响应表示已收到请求消息头.客户端应继续发送主体。请求完成后,再由服务器返回另一个响应。

200 Ok。本状态码表示已成功提交请求,且响应主体中包含请求结果。

201 Created. PUT请求的响应返回这个状态码,表示请求已成功提交。

301 Moved Permanently。本状态码将浏览器永久重定向到另外一个在Location消息头中指定的URL。以后客户端应使用新URL替换原始URL。

302 Found。本状态码将浏览器暂时重定向到另外一个在Location消息头中指定的URL.客户端应在随后的请求中恢复使用原始URL.

304 Not Modified。本状态码指示浏览器使用缓存中保存的所请求资源的副本。服务器使用If-Modified-Since与工f-None-Match消息头确定客户端是否拥有最新版本的资源。

400 Bad Request。本状态码表示客户端提交了一个无效的HTTP请求。当以某种无效的方式修改请求时(例如在URL中插人一个空格符),可能会遇到这个状态码。

401 Unauthorized.服务器在许可请求前要求HTTP进行身份验证。WWW-Authenticate消息头详细说明所支持的身份验证类型。

403 Forbidden。本状态码指出,不管是否通过身份验证,禁止任何人访问被请求的资源。

404 Not Found。本状态码表示所请求的资源并不存在。

405 Method Not Allowed。本状态码表示指定的URL不支持请求中使用的方法。例如,如果试图在不支持PUT方法的地方使用该方法,就会收到本状态码。

413 Request Entity Too Large。如果在本地代码中探查缓冲器滋出瀚洞并就此提交超长数据串.则本状态码表示请求主体过长,服务器无法处理。

414 Request URI Too Long。与前一个响应类似,本状态码表示请求中的URL过长,服务器无法处理。

500 Internal Server Error。本状态码表示服务器在执行请求时遇到错误。当提交无法预料的输人、在应用程序处理过程中造成无法处理的错误时,通常会收到本状态码。应该仔细检查服务器响应的所有内容,了解与错误性质有关的详情。

503 Service Unavailable。通常,本状态码表示尽管Web服务器运转正常.并且能够响应请求,但服务器访问的应用程序还是无法作出响应。应该进行核实,是否因为执行了某种行为而造成这个结果。

HTTP协议特点

请求应答模式。在HTTP早期的协议里面,如果客户端不去请求资源,服务器就不响应;在HTTP2.0版本里有了一个PUSH(推送)的模式,即是客户端不请求资源,服务器也可以主动推送资源。

灵活可扩展。能够传输非常丰富的内容

可靠传输。根据计算机网络的知识,HTTP是应用层的协议,工作在传输层之上,传输层的TCP/IP协议是可靠传输。

无状态(stateless。每一次请求都是独立的。

无状态的特点会让网络访问变得复杂,一旦客户端和服务器的数据交换完毕,就会断开连接,再次请求,会重新连接,如果不采取有效的措施,每次操作都需要验证你的身份才能继续。我们需要保持这个会话,告诉网站这都是我自己的操作,不用反复地验证我的身份。解决这个问题,可以在用户第一次登陆后,下发一个表示其身份的标志,之后的每一次访问就带上这个标志就行了。这个身份标志就是cookie这就解决了我们在文章开头提出的问题。

cookie和session

cookie是key/value格式,例如name=admin、id=1 等等。

Set-Cookie格式:name=value   cookie的键值对(这是必须的)

Set-Cookie消息头还可包含以下任何可选属性,用它们控制浏览器处理cookie的方式。

expires                cookie的过期时间,是年-月-日 几点几分的格式。

max-age              cookie的有效时间(单位是秒),优先级比expires高(如果未设置cookie的过期/有效时间,cookie只能用于当前的浏览器会话中(关掉浏览器cookie就没了)

domain               用于指定cookie的有效域。这个域必须和收到cookie的域相同,或者是它的父域。

path                    cookie匹配的路径

secure                 只在HTTPS连接中提交cookie

httponly              无法通过客户端JavaScript直接访问cookie(不允许通过脚本document.cookie去更改这个值)

登陆之后,收到的响应头内带有Set-Cookie消息头(由服务器下发给客户端),之后在规定时间之内在访问其它页面时的请求头内会带有该Cookie值(客户端发送给服务器),用于确认你的身份,从而实现保持会话,自动登录。

cookie是可以看的,它存放在浏览器网址栏里锁形状的icon里面。

如果未设置cookie的有效时间,cookie只能用于当前的浏览器会话中(关掉浏览器cookie就没了)

cookie的存储路径:

cookie的特点:明文、可修改、大小受限(视浏览器而定)

用途:记住登陆状态,跟踪用户行为

使用cookie时候,所有网站的cookie都会存在电脑本地,本地的cookie管理起来会很麻烦;每次访问网站的时候还会携带好多cookie值。还是有些麻烦

那就把相关内容存储在服务端,这个东西叫session,用ID标记

session不是cookie的替代,它是基于cookie发挥作用的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值