首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ES6:从CORS fetch调用中检索响应头

ES6是指ECMAScript 6,也被称为ES2015,是JavaScript的一种标准。它是JavaScript语言的下一代标准,引入了许多新的语法和特性,使得开发者能够更加高效地编写代码。

CORS(跨域资源共享)是一种机制,允许在一个域名下的网页向另一个域名下的服务器发送XMLHttpRequest请求。在跨域请求中,浏览器会发送一个预检请求(OPTIONS请求)给服务器,以确定服务器是否允许该跨域请求。如果服务器允许跨域请求,浏览器会发送实际的请求。

在使用fetch进行CORS调用时,可以通过检索响应头来获取服务器返回的信息。响应头包含了服务器返回的一些元数据,如Content-Type、Cache-Control等。可以使用ES6的fetch函数发送跨域请求,并通过调用response对象的headers属性来检索响应头。

以下是一个使用ES6的fetch函数进行CORS调用并检索响应头的示例代码:

代码语言:txt
复制
fetch('https://example.com/api/data', {
  method: 'GET',
  mode: 'cors',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer token'
  }
})
.then(response => {
  const contentType = response.headers.get('Content-Type');
  const cacheControl = response.headers.get('Cache-Control');
  console.log('Content-Type:', contentType);
  console.log('Cache-Control:', cacheControl);
  return response.json();
})
.then(data => {
  console.log(data);
})
.catch(error => {
  console.error(error);
});

在上述代码中,我们使用fetch函数发送一个GET请求到https://example.com/api/data,并设置了mode为'cors'以启用CORS。在获取到响应后,我们通过调用response对象的headers属性来检索响应头中的Content-Type和Cache-Control,并将其打印到控制台。然后,我们通过调用response对象的json方法来解析响应体中的JSON数据,并将其打印到控制台。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云COS(对象存储):https://cloud.tencent.com/product/cos
  • 腾讯云API网关:https://cloud.tencent.com/product/apigateway
  • 腾讯云CDN(内容分发网络):https://cloud.tencent.com/product/cdn
  • 腾讯云VPC(虚拟私有云):https://cloud.tencent.com/product/vpc
  • 腾讯云WAF(Web应用防火墙):https://cloud.tencent.com/product/waf
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库MySQL版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动推送:https://cloud.tencent.com/product/tpns
  • 腾讯云云函数(Serverless):https://cloud.tencent.com/product/scf
  • 腾讯云区块链服务:https://cloud.tencent.com/product/tbaas
  • 腾讯云游戏多媒体引擎:https://cloud.tencent.com/product/gme
  • 腾讯云直播:https://cloud.tencent.com/product/live
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Fetch的使用

前言 在es6之前我们使用XMLHttpRequest实现异步请求,而在es6又新增了一种HTTP请求方式—-fetch与XMLHttpRequest一样同样能实现异步请求,相比较fetch更胜一筹,下面我们来看一下他们的区别...,也就是请求的是json则转换为js对象,请求的是文本还是返回文本,则取决与你调用对应的函数如本文使用了response.json()返回json数据 response.json()返回json response.text...()返回文件 response.blob()返回二进制数据,如图片,视频等等 在上述代码,第一个then返回的结果是一个可读流形式,所有资源都存储在body,我们想要读取数据直接在第一个then方法返回对应的数据格式函数然后在第二个...需要注意得是cors不支持application/json let data = {name:'tvf',sex:'dsf'}; fetch('http://localhost:8080/test.js...不能返回数据 cors不支持application/json let data = {name:'tvf',sex:'dsf'}; fetch('http://localhost:8080

2.1K10

cors跨域探讨

对后台开发者而言,只要在headers返回特定的信息(相当于白名单)–具体的CORS步骤,浏览器会根据headers返回的信息做出具体的行为。...比如:PUT、DELETE等method,规范来说,会使目标地址发生增、删等行为,使目标服务器资源发生改变。 所以,浏览器会发起正式请求前,先向发起一次预请求,等到允许后再发正式请求。...---- 控制CORSES6fetch,已经可以控制cors开关了。...fetch(url,{ mode: mode}) mode=same-origin,不支持跨域,直接在浏览器端拦截跨域请求 mode=no-cors,不执行跨域协议,即不存在跨域问题,即使有特殊header...但是只支持HEAD、GET、POST,且代码不能接收到响应信息。 mode=cors,默认,执行cors协议。

62600

在 JS 如何使用 Ajax 来进行请求

2.XMLHttpRequest XMLHttpRequest对象(简称XHR)在较早的时候用于服务器异步检索数据。 之所以使用XML,是因为它首先用于检索XML数据。...我们还需要调用open()和send()方法。来自服务器的响应存储在responseText变量,该变量使用JSON.parse()转换为JavaScript 对象。...我们需要另外使用setRequestHeader设置请求标“Content-Type” ,并使用send方法的JSON.stringify将JSON正文作为字符串发送。...如果存在网络错误,则将拒绝,这会在.catch()块处理。 如果来自服务器的响应带有任何状态码(如200、404、500),则promise将被解析。响应对象可以在.then()块处理。...我们还必须调用response.json()将响应对象转换为JSON 错误处理 我们来看看当HTTP GET请求抛出500错误时会发生什么: fetch('http://httpstat.us/500'

8.8K20

代替ajax方法fetch()请求方法

当请求发起自同一个域时,响应的类型将会是“basic”,这时,对响应内容的使用将没有任何限制。如果请求来自另外某个域,而且响应的具有CORs信息,那么,响应的类型将是“cors”。...“cors” 和 “basic” 类型的响应基本是一样的,区别在于,“cors”类型的响应限制你只能看到的信息包括`Cache-Control`, `Content-Language`, `Content-Type...“opaque”类型的响应说明请求来自另外一个域,并且不具有 CORS 信息。一个opaque类型的响应将无法被读取,而且不能读取到请求的状态,无法看到请求的成功与否。...“cors” 允许不同域的请求,但要求有正确的 CORs 信息。“cors-with-forced-preflight” 在执行真正的调用前先执行preflight check。...我们的fetch() 调用链条,首先如果fetch()执行结果是 resolve,那么,接着会调用 json() 方法,这个方法返回的也是一个 Promise,这样我们就得到一个分析后的JSON对象。

12210

asp.net core 系列之允许跨域访问-1(Enable Cross-Origin Requests:CORS)

) 设置暴露的响应(response header) 跨不同源请求的证书(Credentials) 设置过期时间 AddPolicy 在StartUp.ConfigureServices方法调用;对于一些选项...,先阅读一下,CORS是怎么工作的,可能会有帮助 设置允许的源(Origins) AllowAnyOrigin :允许CORS请求任何源来访问,这是不安全的 注意:指定AllowAnyOrigin...当应用使用这两个配置时,CORS服务返回一个无效的CORS响应。...列出来; 设置暴露的响应 默认情况下,浏览器不会暴露所有的响应给应用。...默认可用的响应是: Cache-Control Content-Language Content-Type Expires Last-Modified Pragma 如果想让其他的头部对应用可用,可以调用

2.4K10

跟我一起探索 HTTP-Fetch API

它同时还为有关联性的概念,例如 CORS 和 HTTP Origin 标信息,提供一种新的定义,取代它们原来那种分离的定义。 发送请求或者获取资源,请使用 fetch() 方法。...与 jQuery 的区别 fetch 规范主要在三个方面与 jQuery.ajax() 不同: fetch() 返回的 Promise 不会因 HTTP 的错误状态而被拒绝,即使响应是 HTTP 404...Fetch 接口 fetch() 包含了 fetch() 方法,用于获取资源。 Headers 表示响应/请求的标信息,允许你查询它们,或者针对不同的结果做不同的操作。...示例 在 Fetch Request 示例,我们使用对应的构造器创建了一个新的 Request 对象,然后调用 fetch() 方法获取资源。...with init then Request 示例,我们做同样的操作,除了在调用 fetch() 时传入一个 init 对象: var myImage = document.querySelector

20030

跨域问题(CORS Access-Control-Allow-Origin)

,解决办法无非有两种方式:响应添加参数和添加过滤器,下面就详细说说CORS跨越问题的起因与详细解决办法。...例如,XMLHttpRequest和Fetch API遵循同源策略, 这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非使用CORS。      ...浏览器支持在 API 容器(例如 XMLHttpRequest 或 Fetch )使用 CORS,以降低跨域 HTTP 请求所带来的风险。...Web 字体 (CSS 通过 @font-face 使用跨域字体资源),,因此,网站就可以发布 TrueType 字体资源,并只允许已授权网站进行跨站调用。 WebGL 贴图。...解决办法如下: 添加响应      在被请求资源添加响应信息"Access-Control-Allow-Origin:* 过滤器     在本项目中添加如下过滤器: /** * 解决跨域问题 */

1.9K20

跨域问题(CORS Access-Control-Allow-Origin)

,解决办法无非有两种方式:响应添加参数和添加过滤器,下面就详细说说CORS跨越问题的起因与详细解决办法。...例如,XMLHttpRequest和Fetch API遵循同源策略, 这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非使用CORS。...浏览器支持在 API 容器(例如 XMLHttpRequest 或 Fetch )使用 CORS,以降低跨域 HTTP 请求所带来的风险。...Web 字体 (CSS 通过 @font-face 使用跨域字体资源),,因此,网站就可以发布 TrueType 字体资源,并只允许已授权网站进行跨站调用。 WebGL 贴图。...解决办法如下: 添加响应 在被请求资源添加响应信息”Access-Control-Allow-Origin:* 过滤器 在本项目中添加如下过滤器: /** * 解决跨域问题

87210

跨域(CORS)产生原因分析与解决方案,这一次彻底搞懂它

从一段示例开始 index.html 创建 index.html 使用 fetch 调用 http://127.0.0.1:3011/api/data <!...本节代码示例: github.com/qufei1993/http-protocol/tree/master/example/cors/01 总结回答最开始提出的问题 浏览器限制了脚本内发起的跨源...当一个请求在浏览器端发送出去后,服务端是会收到的并且也会处理和响应,只不过浏览器在解析这个请求的响应之后,发现不属于浏览器的同源策略(地址里面的协议、域名和端口号均相同)也没有包含正确的 CORS 响应...设置客户端 为 index.html 里的 fetch 方法增加一些设置,设置请求的方法为 PUT,请求增加一个自定义字段 Test-Cors。...,解决其实并不难,上面的讲解其实也提供了解决方案,例如在 Node.js 我们可以设置响应头部字段 Access-Control-Allow-Origin、Access-Control-Expose-Headers

6.3K91

PWA系列——Fetch API

虽然同样也是处理 HTTP 请求和响应的,但 fetch 有两个不同之处,一个是收到错误的 HTTP 状态码时,fetch 方法返回的 Promise 不会被 reject,而是将 resolve 的对象名为...fetch 作为全局作用域中的 fetch,首先我们需要快速了解一下 fetch 方法如何调用(参考 MDN): 他可以接收一个 USVString 字符串或者一个 Request 对象(下文会讲到 Request...在Chrome,Chrome 47之前的默认值是 follow, Chrome 47开始是 manual。...如果有 body 数据,那么与上文中提到的 Request 一样包含五个方法用来解析数据 Headers 请求或响应 Headers 构造函数用来创建请求或响应的。...Headers.get() 以 ByteString 的形式Headers对象返回指定header的全部值.

94120

15 张精美动图全面讲解 CORS

说了这么多,同源策略和 CORS 又有什么关系? 2.浏览器 CORS 出于安全原因,浏览器限制脚本内发起的跨域 HTTP 请求。例如 XHR 和 Fetch 就遵循同源策略。...3.服务端 CORS 作为服务器开发人员,我们可以通过在 HTTP 响应添加额外的响应字段 Access-Control-* 来表明是否允许跨域请求。...根据这些 CORS 响应字段,浏览器可以允许一些被同源策略限制的跨源响应。...这个响应字段现在被添加到服务器发回给客户端的 response header 。...然而,服务器在 Access-Control-Allow-Origin 响应字段没有标记这个站点,浏览器 CORS 机制就阻止了这个响应,我们无法在我们的代码获取响应数据。

1K40

跨域问题Access to XMLHttpRequest‘*‘from origin ‘*‘ has been blocked by CORS..Access-Control-Allow-Origin

源’本地路径‘访问 ‘目标路径(请求链接)‘文本传输请求已被CORS策略阻塞:对预置请求的响应未通过访问控制检查:请求的资源上不存在’Access- control – allow – origin...例如,XMLHttpRequest和Fetch API遵循同源策略。 这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非响应报文包含了正确CORS响应。...CORS(跨源资源共享)是一个系统,由传输HTTP标组成,用于确定浏览器是否阻止前端JavaScript代码访问跨源请求的响应 该同源安全政策禁止以资源跨域访问。...现代浏览器支持在 API 容器(例如 XMLHttpRequest 或 Fetch )使用 CORS,以降低跨域 HTTP 请求所带来的风险。...最后发现在调用处指定 jQuery.support.cors = true; 这一句就能解决IE8、9的问题了 这句话的意思就是指定浏览器支持跨域。

1.8K10

跨域问题总结

当一个跨域请求在浏览器端发送出去后,后端服务会收到的请求并且也会处理和响应,只不过浏览器在解析这个请求的响应之后,发现不满足浏览器的同源策略(协议、域名和端口号均相同),也没有包含正确的 CORS 响应...设置前端服务 创建 index.html 使用 fetch 调用 http://127.0.0.1:3011/api/data fetch...再看下后端服务的输出,可以看到后端服务收到并且正常响应了请求,只不过浏览器在解析这个请求的响应之后,发现不满足浏览器的同源策略(协议、域名和端口号均相同),也没有包含正确的 CORS 响应,就拦截了这个响应...预检请求示例 设置前端服务 为 index.html 里的 fetch 方法增加一些设置,设置请求的方法为 PUT,请求增加一个自定义字段 Test-Cors。...Access-Control-Allow-Credentials 响应

2.7K10

用浏览器缓存绕过同源策略(SOP)限制

配置问题之前,我们先来厘清几个重要的知识点: 1、Access-Control-Allow-Origin的星号“*”说明,任意外部域名都能与该API进行交互,执行跨域的请求调用; 2、Access-Control-Allow-Credentials...但是,我在服务端对该API的响应消息中发现了一个名为 ‘Etag’ 的消息,这是一个浏览器缓存标记,代表客户端请求资源未发生变化,那么浏览器就可以用户的缓存内容中去取出然后响应给用户。...Payload与漏洞利用 我想起Twitter用户@Bitk_曾用过一个技巧,那就是用javascript的fetch API方法去强制浏览器缓存中直接发起一个跨域请求,而恰巧 Keybase 在这里未曾对服务端响应头部署过任何缓存控制...如下: 为了确认Payload是否被成功执行,从下图的浏览器请求信息可以看到,fetch方法直接浏览器缓存读取了我的身份信息。...漏洞上报及处理进程 2019.12.19 漏洞初报 2019.12.19 两小时后,Keybase在响应消息中加入了‘Cache-Control: no-store’ 2019.12.24

1.2K10
领券