fetch

在原生ajax+es6promise的基础上封装的一个语法糖,返回promise对象。

fetch(url, initObj)
.then(res=>res.json())
.then(data=>{
//这里得到返回的json对象,可进行操作
})
.cateh(err){
console.log(err);
}; //initObj
{
body: JSON.stringify(data), // must match 'Content-Type' header
cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
credentials: 'same-origin', // include, same-origin, *omit
headers: {
'user-agent': 'Mozilla/4.0 MDN Example',
'content-type': 'application/json'
},
method: 'POST', // *GET, POST, PUT, DELETE, etc.
mode: 'cors', // no-cors, cors, *same-origin
redirect: 'follow', // manual, *follow, error
referrer: 'no-referrer', // *client, no-referrer
}

cookie,localStorage,sessionStorage,indexDB

  • cookie

    由服务器通过返回响应在浏览器上设置,用于存储会话信息的。性质上是绑定在特定的域名下的,当设定了一个cookie后,再给创建它的域名发送请求时都会包含这个cookie。无法被其他域所访问(CROS跨域时默认不会发送cookie)。

    组成:

    • 名称name:不区分大小写且需经过URL编码
    • 值value:需经过URL编码
    • 域domain:cookie对哪个域是有效的,所有向该域发送的请求中都会包含这个cookie
    • 路径path:对于域中指定的路径才发送cookie
    • 失效时间expires:表示cookie何时应该被删除的时间戳,默认是浏览器会话结束时立即删除
    • 安全标识secure:指定后只有在使用SSL连接才能发送到服务器

    document.cookie这个API过于蹩脚,用于获取属性时会返回页面可用的所有cookie的字符串:

    name1=value1;name2=value2;name3=value3

    所有名字和值都是经过URL编码,因此必须使用decodeURIComponent()来解码

    用于设置值:

    document.cookie = `name=value;expires=${new Date(new Date().getTime() +
    24 * 60 * 60 * 1000).toUTCString()};path=domain_path;domain=domain_name;secure`;

    不会覆盖cookie除非设置的cookie名称已存在

  • localStorage

    要访问同一个localStorage对象页面必须遵循同源规则,数据会保留到通过JS删除或者用户清除浏览器缓存。

    方法:

    • setItem(name, value)
    • getItem(name)
    • removeItem(name)
  • sessionStorage

    存储特定于某个服务器会话的数据,本地不可访问,只保留到浏览器关闭。

    方法于localStorage同。

  • indexDB

    在浏览器中保存结构化数据的一种数据库,异步进行,需要注册事件来处理结果。

    同上面三种存储方式相同,不能跨域共享。

JSONP(JSON with padding)填充式JSON

由回调函数和数据组成。回调函数时当响应来时应该在页面中调用的函数,这个名字是在请求中指定的。数据就是在传入回调函数中的JSON数据。

其实就像是GET请求一样,通过URL后面的参数(发送筛选条件和回调函数的名字),在服务器中筛选合适的数据返回函数调用,让客户端接收到数据。

不足:

  1. 仅限于GET方法,而且需要保证域的安全性(避免响应中夹杂恶意代码)。
  2. 要确定JSONP请求是否失败并不容易,虽然H5新增script标签的onerror事件但是兼容性捉急。

图像Ping

也是一种跨域请求,但是一种简单的单向的向服务器通信的一种跨域方式。请求的方式和GET方式类似,但是却不能够获得响应的数据。

var img = new Image();
img.onload = img.onerror = function(){ //知道响应什么时候能收到
alert("done");
};
img.src = 'http://www.xxx.com/test?name=simple'; //发送了一个name参数

不足:

  1. 仅限于GET请求
  2. 无法访问响应主体

前端知识点回顾——Javascript篇(六)的更多相关文章

  1. 前端知识点回顾——Javascript篇(二)

    JavaScript的解析顺序 第一阶段:编译期 寻找关键字声明的变量.函数声明的变量,同时会对变量进行作用域的绑定 var声明的变量,在编译期会赋一个默认值undefined,变量提升的特性. ES ...

  2. 前端知识点回顾——Javascript篇(五)

    DOM 常用的DOM获取方法: node.children 返回子元素节点,没有兼容性问题,动态获取 node.parentNode 获取父节点,没有兼容性问题 node.offsetParent 获 ...

  3. 前端知识点回顾——Javascript篇(四)

    Symbol 为什么需要symbol ES5里面对象的属性名都是字符串,如果你需要使用一个别人提供的对象,你对这个对象有哪些属性也不是很清楚,但又想为这个对象新增一些属性,那么你新增的属性名就很可能和 ...

  4. 前端知识点回顾——Javascript篇(三)

    数组的冒泡.选择和插入排序法 冒泡排序法(从小到大) function bubble(arr){ for(let i = 0 ;i<arr.length-1;i++){ for(let j = ...

  5. 前端知识点回顾——Javascript篇(一)

    DOM特殊元素获取 document.documentElement //HTML标签 document.head //head标签 document.title //title标签 document ...

  6. web前端知识点(JavaScript篇)

    call,apply,bind call,apply,bind这三者的区别,及内部实现原理,点这里 promise promise函数的内部实现原理,点这里 闭包 闭包就是能够读取其他函数内部变量的函 ...

  7. 前端知识点回顾——HTML,CSS篇

    前端知识点回顾篇--是我当初刚转行为了面试而将自己学过的前端知识整理成的一份笔记,个人目的性很强,仅供参考. doctype 有什么用 doctype是一种标准通用标记语言的文档类型声明,目的是告诉标 ...

  8. [转] Web前端优化之 Javascript篇

    原文链接: http://lunax.info/archives/3099.html Web 前端优化最佳实践之 JavaScript 篇,这部分有 6 条规则,和 CSS 篇 重复的有几条.前端优化 ...

  9. 前端开发之JavaScript篇

    一.JavaScript介绍  前端三剑客之JavaScript,简称js,可能是这三个里面最难的一个了.很早以前,市面上流通着三种js版本,为了统一,ECMA(欧洲计算机制造协会)定义了规范的版本, ...

随机推荐

  1. linux下Django Nginx+uwsgi 安装配置

    原文链接 在前面的章节中我们使用 python manage.py runserver 来运行服务器.这只适用测试环境中使用. 正式发布的服务,我们需要一个可以稳定而持续的服务器,比如apache, ...

  2. winform 导入 导出 excel

    https://blog.csdn.net/pp_fzp/article/details/51502233

  3. php-fpm优化内存占用大

    1.1 Linux的php-fpm优化心得-php-fpm进程占用内存大和不释放内存问题 LNMP架构中PHP是运行在FastCGI模式下,按照官方的说法,php-cgi会在每个请求结束的时候会回收脚 ...

  4. 实用: 将程序的内容写出到excel中

    pom <!-- 读取excel文件 --><dependency> <groupId>org.apache.poi</groupId> <art ...

  5. Python&Selenium&pytest借助allure生成自动化测试报告

    一.摘要 本篇博文将介绍Python和Selenium进行自动化测试时,如何借助allure生成自动化测试报告 二.环境配置 首先python环境中安装pytest和pytest_allure_ada ...

  6. [zhuanzai]Bean对象注入失败 .NoSuchBeanDefinitionException: No qualifying bean of type..

    nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying b ...

  7. prometheus部署

    1.prometheus安装 软件下载: wget https://dl.grafana.com/oss/release/grafana-6.4.2-1.x86_64.rpm https://gith ...

  8. MyBatis中的OGNL教程

    MyBatis中的OGNL教程 有些人可能不知道MyBatis中使用了OGNL,有些人知道用到了OGNL却不知道在MyBatis中如何使用,本文就是讲如何在MyBatis中使用OGNL. 如果我们搜索 ...

  9. Mybatis resultMap和resultType的区别

    resultType和resultMap功能类似  ,都是返回对象信息  ,但是resultMap要更强大一些 ,可自定义.因为resultMap要配置一下,表和类的一一对应关系,所以说就算你的字段名 ...

  10. 了解Springboot加载文件机制

    https://blog.csdn.net/u014044812/article/details/84256764(