这是我参与「第四届青训营」笔记创作活动的第9天。 将HTML代码保存成HTML文件,放在某台具有固定公网ip的主机上,主机里装有web服务器软件(如Apache),这样这台主机就可以成为服务器,其他人通过访问这个服务器看到网页。
1静态网页
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8">
<title>This is a Demo</title>
</head>
<body>
<div id = "container">
<div class = "wrapper">
<h2 class = "title">Hello World</h2>
<p class = "text">Hello,this is a paragraph.</p>
</div>
</div>
</body>
</html>
静态网页的文字、图片等内容均通过写好的HTML代码来制定。加载速度快,编写简单。但是可维护性查,不能根据URL灵活地变化显示内容。
2动态网页
动态网页不再是一个简单地HTML,可能包含JSP、PHP、Python,功能更加强大,可以动态解析URL中的参数变化,关联数据库并动态呈现不同页面的内容,还可以实现用户登录和注册的功能。
3无状态HTTP
HTTP协议对事务处理没有记忆能力,当我们向服务器发送请求,服务器解析请求并响应,这个过程是完全独立的,服务器不会记录前后状态的变化。
这意味着如果后续需要处理前面的信息,则必须重传。导致需要额外传递一些前面的重复请求,才能获得后续响应。
因此出现了两个用于保持HTTP连接状态的技术,Session和Cookies。
4Session
在服务端(网站的服务器),用于保存用户的Session信息。
其本身的含义是指有始有终的一系列动作/消息。比如打电话时,从拿起电话拨号到挂断电话这中间的一系列过程可以称为一个Session。在Web中,Session对象用来存储特定用户Session所需的属性及配置信息。
当用户在Web页面直接跳转时,存储在Session中的变量不会丢失,而会一直存在下去。当用户请求Web页面时,如果Web还没有特定用户的Session,Web服务器会自动创建一个Session对象,等到Session过期后,服务器会终止该Session。
5Cookies
指某些网站为了辨别用户身份、进行Session跟踪而存储在用户本地终端上的数据。
在客户端(浏览器端),浏览器在下次访问网页时会自动附带上Cookies发送给服务器,服务器通过识别Cookies并鉴定出是哪个用户,然后再判断用户是否是登录状态,进而返回对应的响应。
在爬虫中,处理需要登录的页面时,一般会将登录成功之后获取的cookies放在前置头中直接请求。
5.1当客户端第一次请求服务器时
服务器会返回一个响应头中带有Set-Cookie字段的响应给客户端,用来标记是哪一个用户,客户端浏览器会把Cookies 保存起来
5.2当浏览器下一次再请求该网站时
浏览器会把此Cookies放到请求头一起提交给服务器。Cookies 携带了SessionID信息,服务器检查该Cookies即可找到对应的Session是什么,然后判断Session来以此来辨认用户状态。
5.3在成功登录某个网站时
服务器会告诉客户端设置哪些Cookies信息。在后续访问页面时客户端会把Cookies发送给服务器,服务器再找到对应的Session加以判断,如果Session中的某些设置登录状态的变量是有效的,就证明用户处于登录状态。此时返回登录之后才可以查看的网页内容,浏览器再进行解析便可以看到了。
5.4Cookies的内容
打开开发者模式,可以在Application-Storage里找到Cookies。
Name一旦创建,不可更改
Max-age是cookie的保质期,单位为秒。如果正数,则在Max-age秒后失效;如果为负数,则在关闭浏览器后失效。
Path:如果为空,则本域名之下的所有路径都可以访问该cookie;如果为指定路径,则指定路径才能访问该cookie。
Domian:可以访问该cookie的域名。
Size:该cookie的大小
HTTP:HTTP only属性,如果为true,则只有在http header中带有该cookie的信息,不能通过document.cookie来访问该cookie。
6常见误区
1)表面意思来说,会话Cookie就是把Cookie放在浏览器内存里,浏览器在关闭之后该Cookie即失效持久Cookie则会保存到客户端的硬盘中,下次还可以继续使用,用于长久保持用户登录状态。严格来说,没有会话 Cookie 和持久Cookie之分,只是由Cookie的Max Age或Expires字段决定了过期的时间。
2)在谈论Session 机制时,常听到这样一种误解——“只要关闭浏览器,Session 就消失了”。对Session 来说除非程序通知服务器删除一个Session,否则服务器会一直保留比如程序,一般都是在我们做注销操作时才去删除Session。
3)由于关闭浏览器不会导致Session 被删除,这就需要服务器为Session 设置一个失效时间。当距离客户端上一次使用Session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把Session 删除以节省存储空间。
个人总结
本文介绍了什么是静态网页,什么是动态网页,并且由于HTTP的无状态性,需要Session和Cookies来保持HTTP链接。详细介绍了Session和Cookies的原理和内容。