首页 > 其他分享 >js前端fetch参数

js前端fetch参数

时间:2023-05-24 21:24:06浏览次数:48  
标签:标头 请求 前端 js 发送 缓存 Referer fetch

const response = fetch(url, {
method: "GET",//请求方式
headers: {//定制http请求的标头
"Content-Type": "text/plain;charset=UTF-8"
},
body: undefined,//post请求的数据体,因为此时为get请求,故为undefined
referrer: "about:client",
referrerPolicy: "no-referrer-when-downgrade",//用于设定fetch请求的referer标头
mode: "cors", //指定请求模式,此时为cors表示支持跨域请求
credentials: "same-origin",//发送cookie
cache: "default",//指定如何处理缓存
redirect: "follow",
integrity: "",
keepalive: false,
signal: undefined
});

method:HTTP 请求的方法,POST、DELETE、PUT都在这个属性设置。

headers:一个对象,用来定制 HTTP 请求的标头。

body:POST 请求的数据体。

cache:指定如何处理缓存。可能的取值如下:
/*
default:默认值,先在缓存里面寻找匹配的请求。
no-store:直接请求远程服务器,并且不更新缓存。
reload:直接请求远程服务器,并且更新缓存。
no-cache:将服务器资源跟本地缓存进行比较,有新的版本才使用服务器资源,否则使用缓存。
force-cache:缓存优先,只有不存在缓存的情况下,才请求远程服务器。
only-if-cached:只检查缓存,如果缓存里面不存在,将返回504错误。
/
mode: 指定请求的模式。可能的取值如下:
/

cors:默认值,允许跨域请求。
same-origin:只允许同源请求。
no-cors:请求方法只限于 GET、POST 和 HEAD,并且只能使用有限的几个简单标头,不能添加跨域的复杂标头,相当于提交表单所能发出的请求。
/
credentials:指定是否发送 Cookie。可能的取值如下:
/

same-origin:默认值,同源请求时发送 Cookie,跨域请求时不发送。
include:不管同源请求,还是跨域请求,一律发送 Cookie。
omit:一律不发送。
*/
signal:指定一个 AbortSignal 实例,用于取消fetch()请求

keepalive:用于页面卸载时,告诉浏览器在后台保持连接,继续发送数据。
/*
一个典型的场景就是,用户离开网页时,脚本向服务器提交一些用户行为的统计信息。
这时,如果不用keepalive属性,数据可能无法发送,因为浏览器已经把页面卸载了。
/
redirect: 指定 HTTP 跳转的处理方法。可能的取值如下:
/

follow:默认值,fetch()跟随 HTTP 跳转。
error:如果发生跳转,fetch()就报错。
manual:fetch()不跟随 HTTP 跳转,但是response.url属性会指向新的 URL,response.redirected属性会变为true,由开发者自己决定后续如何处理跳转。
/
integrity:指定一个哈希值,用于检查 HTTP 回应传回的数据是否等于这个预先设定的哈希值。
/

比如,下载文件时,检查文件的 SHA-256 哈希值是否相符,确保没有被篡改
fetch('http://site.com/file', {
integrity: 'sha256-abcdef'
});
/
referrer: 用于设定fetch请求的referer标头。
/

这个属性可以为任意字符串,也可以设为空字符串(即不发送referer标头)。
/
referrerPolicy: 用于设定Referer标头的规则。可能的取值如下:
/

no-referrer-when-downgrade:默认值,总是发送Referer标头,除非从 HTTPS 页面请求 HTTP 资源时不发送。
no-referrer:不发送Referer标头。
origin:Referer标头只包含域名,不包含完整的路径。
origin-when-cross-origin:同源请求Referer标头包含完整的路径,跨域请求只包含域名。
same-origin:跨域请求不发送Referer,同源请求发送。
strict-origin:Referer标头只包含域名,HTTPS 页面请求 HTTP 资源时不发送Referer标头。
strict-origin-when-cross-origin:同源请求时Referer标头包含完整路径,跨域请求时只包含域名,HTTPS 页面请求 HTTP 资源时不发送该标头。
unsafe-url:不管什么情况,总是发送Referer标头。
*/
取消fetch请求
fetch()请求发送后,如果中途想要取消,需要使用AbortController对象
//创建一个AbortController实例
let controller = new AbortController();

fetch(url, {
signal: controller.signal
});
//给controller.signal绑定监听事件,controller.signal的值改变则会触发abort事件
controller.signal.addEventListener('abort',
() => console.log('abort!')
);
// controller.abort()方法用于发出取消信号。这时会触发abort事件,这个事件可以监听

controller.abort(); // 取消

// 可以通过controller.signal.aborted属性判断取消信号是否已经发出
console.log(controller.signal.aborted); // true

标签:标头,请求,前端,js,发送,缓存,Referer,fetch
From: https://www.cnblogs.com/caisl/p/17429545.html

相关文章

  • 用jquery或js获取select标签中选中的option值及文本
    本文目录一、示例二、获取option的文本三、获取option中value的值四、代码展示一、示例<selectid="selectedTest"οnchange="doSomething();"><optionvalue="abc">北京</option><optionvalue="edf">上海</option><opt......
  • 【前端异常】html页面中的button按钮会自动提交form表单的问题以及解决方案
    情景描述有时候我们可能需要在表单中放置多个按钮,比如表单页面常见的按钮有创建和取消。点击创建按钮会触发单击响应事件,在单击响应事件中进行提交表单,这没有任何问题。点击取消按钮的时候,触发对应的单击响应事件,这个单击响应事件中主要处理关闭表单页面逻辑,所以会关闭页面,这也正常......
  • ZJSU五月多校合训
    强度焦虑制造者具体而言,zszz3在每个游戏版本中都会推出一名新角色,或加强一名旧角色。玩家必须将这名新角色或被加强的旧角色编入队伍,否则就会落后于版本。而编队数量是有限的,这意味着玩家可能不得不踢出一名编队中现有的角色。而若被加强的角色恰好在玩家的编队中,则可以开心......
  • 【踩坑记录】autojs使用while(1)导致broadcast无法正常执行
    autojs中的死循环操作最好使用setInterval而不是,while(1)。 while(1)会导致其他语句无法执行,这里面包括了信号相关的,比如今天踩得坑: 用events.broadcast.emit发出信号后,相应的on语句无法正常执行,后来才发现原来是为了一个用while(1)来执行死循环导致整个线程全部死在了这里,......
  • window 10 安装node.js时遇到2502 2503错误解决方法
    最近想安装一下node.js,可是在安装过程中出现了2503和2502的问题,如下图:不过除了这些代码外,微软并没有提供解决办法。这一问题出现在Win7/Win8.1/Win10中,原因就是C:\Windows\Temp文件夹NTFS权限错误。为了能够让WindowsInstaller操作正确,当前账户需要有Temp文件夹完全管理员权......
  • JQuery和JS的入口函数比较
    首先要知道JQuery入口函数和JS入口函数的区别:区别一: 在页面中书写个数不同:(1)JS的入口函数只能出现一次,出现多次会存在后者将前者事件覆盖的问题。(2)JQuery的入口函数,可以出现任意多次,并不存在事件覆盖问题。 区别二:执行时机不同:(1)JS的入口函数是在所有的文件资源加载......
  • js中判断数组的几种方法
    vara=[];基于instanceofainstanceofArray;基于constructora.constructor===Array;基于Object.prototype.isPrototypeOf()Array.prototype.isProtypeOf(a);基于getPrototypeOfObject.getPrototypeOf(a)===Array.prototype;基于Object.prototype......
  • JDK自带工具jstat
    打印类加载器信息,其中8297为java项目的进程号,可以使用jps名称打印java所有项目的进程号jstat-class8297 打印编译情况jstat-compiler8297 编译16705,编译失败一个,失败的方法sun/misc/URLClassPathgetLoader统计堆空间的情况,间隔时间2秒,执行5次jstat-gc8297......
  • 【JavaScript用法】JavaScript(JS)的基本语法(JS数据类型,JS变量,JS运算符,JS流程控制语句
    JavaScript(JS)的基本语法目录JavaScript(JS)的基本语法一.与html结合方式二.注释三.数据类型:四.变量五.运算符(和Java有点类似)六.流程控制语句(和JAVA 类似):七.JS特殊语法:一.与html结合方式       1.内部JS:定义<script>,标签体内容就是js代码(可以理解为和html......
  • JQuery框架 -- JQuery怎么使用和各个版本的区别、JQuery对象和JS对象区别、JQuery选择
    目录一、概念:一个JavaScript框架。简化JS开发。二、快速入门三、JQuery对象和JS对象区别与转换四、选择器:筛选具有相似特征的元素(标签)4.1、基本操作学习4.2、选择器分类    1.基本选择器      2.层级选择器      3.属性选择器      4.过滤......