11. cookie_session_原生ajax_readyState的值_同源策略_跨域_jsonp的使用
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)
① 创建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的使用的更多相关文章
- 第二百七十四节,同源策略和跨域Ajax
同源策略和跨域Ajax 什么是同源策略 尽管浏览器的安全措施多种多样,但是要想黑掉一个Web应用,只要在浏览器的多种安全措施中找到某种措施的一个漏洞或者绕过一种安全措施的方法即可.浏览器的各种保安措 ...
- JS同源策略和跨域问题
同源策略和跨域问题:http://www.cnblogs.com/chaoyuehedy/p/5556557.html 深入浅出JSONP--解决ajax跨域问题:http://www.cnblogs ...
- JS同源策略和跨域访问
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的,浏览器只 ...
- cors跨域和jsonp劫持漏洞 和 同源策略和跨域请求解决方案
cors跨域和jsonp劫持漏洞: https://www.toutiao.com/a6759064986984645127/ 同源策略和跨域请求解决方案:https://www.jianshu.co ...
- Ajax_同源策略以及跨域问题
Ajax_同源策略 同源策略是浏览器的一种安全策略, 同源指的是:协议.域名.端口.必须完全相同. 违背同源策略就是跨域. 而AJAX是默认遵循同源策略的: 同源说通俗一点呢就是页面跟获取请求的接口是 ...
- ajax请求总是不成功?浏览器的同源策略和跨域问题详解
场景 码农小明要做一个展示业务数据的大屏给老板看,里面包含了来自自己网站的数据和来自隔壁老王的数据.那么自己网站的数据提供了 http://xiaoming.com/whoami 这样的数据接口隔壁老 ...
- django中同源策略和跨域解决方案
一 同源策略 1.1何谓同源? 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源. 举个例子: 下表给出了相对http://a.xyz.com/dir/page.html同 ...
- 1.7 xss之同源策略与跨域访问
同源策略: 同源策略 在web应用的安全模型中是一个重要概念.在这个策略下,web浏览器允许第一个页面的脚本访问第二个页面里的数据,但是也只有在两个页面有相同的源时.源是由URI,主机名,端口号组合而 ...
- script标签crossorigin属性及同源策略和跨域方法
首先介绍(同源策略) 同源策略是浏览器最核心且基本的安全约定,要求协议.域名.端口都相同为同源,如果非同源时请求数据浏览器会在控制台抛出跨域异常错误,同源策略是浏览器的行为,即使客户端请求发送了,服务 ...
随机推荐
- Dynamics CRM 日常使用JS整理(一)
整理下平时CRM开发中用到的一些基本的js操作 取值: var oResult = Xrm.Page.getAttribute(sFieldName).getValue(); var oResult ...
- 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结
码云链接 https://gitee.com/A5320/pair_programming_code 需求分析 实现一个命令行程序,要求: 1.自动生成小学四则运算题目(加.减.乘.除) 2.支持整数 ...
- Vue技术内幕 出去看看吧 榨干部分小细节
vue\src\platforms\web\entry-runtime-with-compiler.js /** * Get outerHTML of elements, taking care * ...
- 408 JavaScript 变量、数据类型、正则
JavaScript 特点 是一门解释性脚本语言 .基于对象脚本编程.简单性(弱类型).安全性.动态性.跨平台 作用: 初学js 引入方式 与html有相同之处 也是3种1 用JavaScript前缀 ...
- [转载]关于在Linux下上传代码至Github
刚开始使用Github没多长时间,所以很多地方不太熟练,看到阿里云上有一篇文章写得不错,故转载过来. 转载自:https://www.aliyun.com/jiaocheng/122729.html ...
- Java基础9-死锁;String;编码
昨日内容回顾 死锁案例 class DeadLock{ public static void main(String[] args){ Pool pool = new Pool(); Producer ...
- 【原创】大数据基础之Spark(3)Spark Thrift实现原理及代码实现
spark 2.1.1 一 启动命令 启动spark thrift命令 $SPARK_HOME/sbin/start-thriftserver.sh 然后会执行 org.apache.spark.de ...
- 【原创】运维基础之Redis(1)简介、安装、使用
redis 5.0.3 官方:https://redis.io/ 一 简介 Redis is an open source (BSD licensed), in-memory data structu ...
- noj算法 素数环 回溯法
描述: 把1到20这重新排列,使得排列后的序列A满足:a. 任意相邻两个数之和是素数b. 不存在满足条件a的序列B使得:A和B的前k(0 <= k <= 19)项相同且B的第k+1项比A的 ...
- wx获取地理位置
1.公众号配置. 2.引入js 一个放在根目录下的txt文件. 3.1)第一个ajax为获取后台传给的wx.config需要的参数:wx.ready().通过ready接口处理成功验证.然后才是wx. ...