cookie 和 session
- 异同
1. session 在服务器端, cookie 在客户端(浏览器)
2. session 默认被存在在服务器的一个文件里(不是内存)
3. session 的运行依赖 session id, 而 session id 是存在 cookie 中的, 也就是说, 如果浏览器禁用了 cookie , 同时 session 也会失效(但是可以通过其它方式实现, 比如在 url 中传递 session_id)
4. session 可以放在 文件、数据库、或内存中都可以。
5. 用户验证这种场合一般会用 session
GET 和 POST
- 表象
- GET在浏览器回退时是无害的, 而POST会再次提交请求。
- GET产生的URL地址可以被Bookmark, 而POST不可以。
- GET请求会被浏览器主动cache, 而POST不会, 除非手动设置。
- GET请求只能进行url编码, 而POST支持多种编码方式。
- GET请求参数会被完整保留在浏览器历史记录里, 而POST中的参数不会被保留。
- GET请求在URL中传送的参数是有长度限制的(URL 的最大长度是 2048 个字符), 而POST么有。
- 对参数的数据类型, GET只接受ASCII字符, 而POST没有限制。
- GET比POST更不安全, 因为参数直接暴露在URL上, 所以不能用来传递敏感信息。
- GET参数通过URL传递, POST放在Request body中。
- 深层
- GET产生一个TCP数据包;POST产生两个TCP数据包。
- GET, 浏览器会把 http 的 header和data一并发送出去, 服务器响应200(返回数据);
- POST, 浏览器先发送 header, 服务器响应 100 continue, 浏览器再发送data, 服务器响应200 ok(返回数据)。