1. cookie

浏览器存储技术。(服务器将少量数据交于浏览器存储管理)

作用: 存储数据, 解决 http 协议无状态问题

工作流程:

浏览器发送请求给服务器,请求登录

服务器返回响应给浏览器,此时携带了cookie(其中包含着当前用户的唯一标识)

浏览器接受到响应中cookie,得保存下来

浏览器下一次发送请求时,会自动携带上cookie,

服务器接受到请求,解析cookie,从而判断是哪个用户发送的请求(解决http协议无状态问题)

服务器端的使用:

设置 cookie        res.cookie(key, value, options)

获取 cookie        引入第三方中间件解析 cookie-parser        req.cookies

清除浏览器 cookie        res.clearCookie(key)

前端使用:

document.cookie        读写二合一

清除        document.cookie = 'hello=123;expires=' + new Date(Date.now() - 1000);

特点:

cookie 数量有限制,同一个域名下大约 20 个左右(不同浏览器不一样)

cookie 大小有限制,每一个 cookie 最大值大约 4kb 左右(不同浏览器不一样)

2. session

也是一种解决 http 协议无状态问题的方案

不同的是:

session 存储位置是服务器

存储大小近乎无限

传输流量更小(只产生一个cookie)

3. 请写出原生 ajax

创建xhr对象

绑定事件监听

onreadystatechange  会监听 readyState 值的变化,一旦发生变化,就会触发当前事件

设置请求信息

xhr.open(请求方式, 请求地址)        (get 请求参数在这写, 以 查询字符串 的方式)

发送请求

xhr.send(body);        (post 请求参数写在这儿,以 请求体参数 的方式)

问题:

chrome 和 firefox: 第二次 get 请求默认走协商缓存,状态码 304,还是会向服务器发送请求

ie:第二次 get 请求默认走强制缓存,状态码 200,不会向服务器发请求

解决:让每一次请求不一样,只要请求不一样,就不会走缓存

4. 谈谈readyState的值

0: xhr 对象创建成功,但是 xhr.open()  方法还未调用

1: xhr.open() 方法已经调用了,但是还未调用 xhr.send() 方法(意味着还没有发送请求,还可以设置请求头信息)

2: xhr.send() 方法已经调用了,接受到了部分响应数据(响应首行和响应头)

3: 接受了响应体数据(如果响应体数据较小或者是纯文本,在此阶段就全部接受完了)

4: 接受了全部响应体数据(数据较大或者音视频资源等)

5. 跨域

同源: 协议、域名、端口号 必须完全相同

同源策略 (Same-Origin Policy) 最早由 Netscape 公司提出,是浏览器的一种安全策略

违背同源策略就是跨域

解决最终原理:绕过浏览器的 ajax 引擎就 ok,所以后面还有服务器代理模式、Nginx 反向代理等方案

解决方案:

  • jsonp

利用 script 标签能够跨域的特性解决跨域的

只能发送 get 请求, 兼容性好

步骤:

① 创建 script 标签

② 设置响应成功的回调函数

③ 设置 script 的src 属性

④ 将 script 添加到页面中生效

⑤ 服务器必须响应 callback(data) 格式数据

  • cors 

11. cookie_session_原生ajax_readyState的值_同源策略_跨域_jsonp的使用的更多相关文章

  1. 第二百七十四节,同源策略和跨域Ajax

    同源策略和跨域Ajax 什么是同源策略  尽管浏览器的安全措施多种多样,但是要想黑掉一个Web应用,只要在浏览器的多种安全措施中找到某种措施的一个漏洞或者绕过一种安全措施的方法即可.浏览器的各种保安措 ...

  2. JS同源策略和跨域问题

    同源策略和跨域问题:http://www.cnblogs.com/chaoyuehedy/p/5556557.html 深入浅出JSONP--解决ajax跨域问题:http://www.cnblogs ...

  3. JS同源策略和跨域访问

    同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的,浏览器只 ...

  4. cors跨域和jsonp劫持漏洞 和 同源策略和跨域请求解决方案

    cors跨域和jsonp劫持漏洞: https://www.toutiao.com/a6759064986984645127/ 同源策略和跨域请求解决方案:https://www.jianshu.co ...

  5. Ajax_同源策略以及跨域问题

    Ajax_同源策略 同源策略是浏览器的一种安全策略, 同源指的是:协议.域名.端口.必须完全相同. 违背同源策略就是跨域. 而AJAX是默认遵循同源策略的: 同源说通俗一点呢就是页面跟获取请求的接口是 ...

  6. ajax请求总是不成功?浏览器的同源策略和跨域问题详解

    场景 码农小明要做一个展示业务数据的大屏给老板看,里面包含了来自自己网站的数据和来自隔壁老王的数据.那么自己网站的数据提供了 http://xiaoming.com/whoami 这样的数据接口隔壁老 ...

  7. django中同源策略和跨域解决方案

    一  同源策略 1.1何谓同源? 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源. 举个例子: 下表给出了相对http://a.xyz.com/dir/page.html同 ...

  8. 1.7 xss之同源策略与跨域访问

    同源策略: 同源策略 在web应用的安全模型中是一个重要概念.在这个策略下,web浏览器允许第一个页面的脚本访问第二个页面里的数据,但是也只有在两个页面有相同的源时.源是由URI,主机名,端口号组合而 ...

  9. script标签crossorigin属性及同源策略和跨域方法

    首先介绍(同源策略) 同源策略是浏览器最核心且基本的安全约定,要求协议.域名.端口都相同为同源,如果非同源时请求数据浏览器会在控制台抛出跨域异常错误,同源策略是浏览器的行为,即使客户端请求发送了,服务 ...

随机推荐

  1. Hadoop记录-JMX参数

    Yarn metrics参数说明 获取Yarn jmx信息:curl -i http://xxx:8088/jmx Hadoop:service=ResourceManager,name=FSOpDu ...

  2. JS正则与PHP正则

  3. [Android] Android 锁屏实现与总结 (二)

    上接: [Android] Android 锁屏实现与总结 (一) 系列文章链接如下: [Android] Android 锁屏实现与总结 (一) [Android] Android 锁屏实现与总结 ...

  4. DQL用户、权限管理(mysql8.0)

    DQL用户.权限管理(mysql8.0) 查看所有的用户: use mysql; -- 使用mysql数据库 select * from user; -- 查询user表中的全部信息,也就是用户 创建 ...

  5. [物理学与PDEs]第3章第2节 磁流体力学方程组 2.2 考虑到电磁场的存在对流体力学方程组的修正

    1.  连续性方程 $$\bex \cfrac{\p \rho}{\p t}+\Div(\rho{\bf u})=0.  \eex$$ 2.  动量守恒方程 $$\bex \cfrac{\p }{\p ...

  6. 已知 $AB$, 求 $BA$

    设 $A,B$ 分别是 $3\times 2$ 和 $2\times 3$ 实矩阵. 若 $\dps{AB=\sex{\ba{ccc}  8&0&-4\\  -\frac{3}{2}& ...

  7. Java之final关键字详解

    1. 修饰类 当用final去修饰一个类的时候,表示这个类不能被继承. 注意: a. 被final修饰的类,final类中的成员变量可以根据自己的实际需要设计为fianl. b. final类中的成员 ...

  8. C#处理非托管资源

    using System; //处理非托管资源 //例如:文件句柄.网络连接.数据库连接 //实现IDisposable不意味着也应该实现一个终结器,终结器会带来额外开销 //发布本机资源,要释放本机 ...

  9. 重新定义Pytorch中的TensorDataset,可实现transforms

    class TensorsDataset(torch.utils.data.Dataset): ''' A simple loading dataset - loads the tensor that ...

  10. Ubuntu 16.04下安装MySQL及远程连接

    最近因为要研究一个关于MySQL的漏洞,所以需要MySQL的环境,就用了近一个小时的时间搭建了一个,期间出了点问题,故记录于此. 1.首先是安装,在命令窗口中输入下面三条命令即可. sudo apt- ...