JavaScript 中的跨域请求:使用 ECMAScript 2021 的 fetch API

在前端开发中,经常需要从服务器端获取数据或者调用 API。然而,由于浏览器的同源策略,通过 JavaScript 直接访问不同域名下的资源是被禁止的,这就导致了跨域请求的问题。本文将介绍如何使用 ECMAScript 2021 的 fetch API 来解决跨域请求的问题,并提供详细的示例代码和指导意义。

什么是跨域请求

跨域请求指的是在浏览器中,通过 JavaScript 访问另一个域名下的资源。如果今天我们在 http://example.com 的页面中使用 JavaScript 向 http://example.org 发送请求,就会触发跨域请求。由于浏览器的同源策略,这个请求将被阻止,并且 JavaScript 的异常处理机制会抛出一个错误,从而导致程序无法正常执行。

如何使用 fetch API 发起跨域请求

fetch API 是一种在浏览器中发送请求的新方式,并且支持异步请求和 Promise 对象,因此在前端开发中越来越受欢迎。下面是使用 fetch API 发起跨域请求的基本示例:

-------------------------------------
  -------------- -- ----------------
  ---------- -- ------------------
  ------------ -- ----------------------

上述代码中,首先使用 fetch 函数指定要请求的资源。fetch 函数的第一个参数是要请求的 URL 地址。需要注意的是,由于这是一个跨域请求,因此在服务器端必须设置 CORS 策略,允许使用跨域请求,否则会出现 403 错误。

fetch 函数返回的是一个 Promise 对象,我们可以通过使用 Promise 的 then 方法来处理服务器返回的数据。在本例中,我们使用 response.json() 方法将返回的 JSON 数据解析为 JavaScript 对象,并在控制台输出。

如果请求出现错误,可以使用 Promise 的 catch 方法来处理错误,这里我们只是简单地将错误输出到控制台上。

如何在请求中添加请求头

在 fetch API 中,可以使用 Headers 对象来创建自定义请求头。下面是添加请求头的示例:

----- ------- - --- ----------
------------------------------ --------------------

------------------------------------- -
  ------- -------
  -------- --------
  ----- --------------------- --------
--
  -------------- -- ----------------
  ---------- -- ------------------
  ------------ -- ----------------------

上述代码中,我们首先创建一个名为 headers 的 Headers 对象,然后使用 append 方法添加一个 Content-Type 请求头,该请求头指定了请求体的数据格式为 JSON。

在使用 fetch 函数发送请求时,我们将修改请求参数,使用 POST 方法发送一个包含 JSON 数据的请求体。在请求中,我们使用 headers 参数来指定请求头,将上述 headers 对象传递给 headers 参数即可。

如何在请求中使用 Cookie

由于浏览器的同源策略,Cookie 只能在相同域名下传输,因此默认情况下 fetch API 不会将 Cookie 发送到其他域名下。如果需要在跨域请求中使用 Cookie,可以使用 credentials 参数来完成设置。下面是示例代码:

------------------------------------- -
  ------------ ----------
--
  -------------- -- ----------------
  ---------- -- ------------------
  ------------ -- ----------------------

上述代码中,我们将 credentials 参数设置为 include,这样就可以在跨域请求中使用 Cookie 了。

如何取消 fetch 请求

在使用 fetch API 发送请求时,有时需要在请求未完成时取消请求。fetch API 提供了 AbortController 对象来取消请求。下面是取消请求的示例代码:

----- ---------- - --- ------------------

------------------------------------- -
  ------- ------------------
--
  -------------- -- ----------------
  ---------- -- ------------------
  ------------ -- ----------------------

-------------------

上述代码中,我们首先创建了一个 AbortController 对象,然后将其 signal 属性传递给 fetch 函数。在请求需要取消时,我们调用 AbortController 对象的 abort 方法即可。

总结

本文介绍了如何使用 ECMAScript 2021 的 fetch API 来处理跨域请求的问题。我们提供了详细的示例代码和指导意义,以帮助开发人员更好地理解如何在前端项目中使用 fetch API 发送异步请求。如果你还不熟悉 fetch API,希望本文能够为你提供一些帮助。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/65a7a619add4f0e0ff0cb8c2


猜你喜欢

  • Deno 中如何使用 Nginx?

    在 Deno 中使用 Nginx 可以提高 Web 应用程序性能,加强应用程序的可靠性,以及防止攻击。Nginx 是一款轻量级的 Web 服务器,能够为应用程序提供高效的 Web 服务,它可以处理大量...

    9 个月前
  • 使用 Angular 中的 Http 模块进行接口调用

    在现代的前端开发中,调用后端数据接口是不可避免的任务。而 Angular 提供了一个十分强大的 Http 模块,可以帮助我们轻松地与后端进行数据交互。在本文中,我们将介绍如何使用 Http 模块进行接...

    9 个月前
  • React-Native 响应式设计实战详解

    前言 随着智能手机和平板电脑的普及,移动设备已经成为了我们日常重要的工具,各种类型的 APP 越来越多地被人们使用。而 React-Native,作为现在最流行的移动端开发框架之一,其高效、稳定、跨平...

    9 个月前
  • React Native 中使用 FlatList 组件遇到的问题及解决方式

    随着 React Native 技术的不断发展,越来越多的开发者选择使用 React Native 开发移动端应用。其中,FlatList 组件是 React Native 中非常常见的列表组件之一。

    9 个月前
  • 如何使用 Node.js 实现基础的搜索功能

    在 Web 开发中,搜索功能是一个必不可少的功能。Node.js 作为一个强大的后端开发语言,可以很方便实现基础的搜索功能。在本文中,我们将介绍如何使用 Node.js 实现基础的搜索功能,包括搜索框...

    9 个月前
  • 在使用 Chai 进行 API 测试时如何针对于 HTTP 错误码进行断言判断

    在进行 API 测试时,经常会遇到 HTTP 错误码。这些错误码包括 400、401、403、404、500 等。这些错误可能会给用户造成困扰,也可能会导致系统崩溃。

    9 个月前
  • 利用 Next.js 构建 SSR 应用的最佳实践

    随着前端技术的不断发展,单页面应用(Single Page Application,SPA)已经成为了主流。然而,SPA 也带来了一些问题,例如 SEO 不友好、首屏加载慢、对爬虫的支持不好等等。

    9 个月前
  • Swoole 高性能网络编程实战

    前言 Swoole 是一个为 PHP 开发的高性能网络通信框架,以协程为基础支持异步 IO,可以用于构建高性能的 Web 应用、游戏服务器、聊天室等。 本文将向您介绍 Swoole 的基本概念、使用方...

    9 个月前
  • 在 Custom Elements 中使用 async/await 实现异步操作的技巧

    Custom Elements 为我们提供了一种定义自己的 HTML 元素的方式,从而使得我们可以创建定制化的、功能丰富的 Web 组件。但是,有些时候我们需要在自定义元素中进行异步操作,这时候就需要...

    9 个月前
  • Hapi 应用部署到容器中的方法探究

    前言 随着云计算和容器化技术的快速发展,将应用程序部署在容器中已经成为了现代化软件开发的一个主流方案。相比于传统的服务器部署方式,容器化部署具有更高的可移植性、可扩展性和安全性。

    9 个月前
  • 在 Node.js 项目中使用 ESLint 进行代码风格检查

    在 Node.js 项目中使用 ESLint 进行代码风格检查 在开发 Node.js 项目时,代码的可维护性和可读性非常重要,对于团队协作来说更是至关重要。而代码规范就是提高代码可维护性和可读性的一...

    9 个月前
  • MongoDB 中使用 $all 进行数组包含查询技巧总结

    在MongoDB中,我们经常需要根据关联的数据进行查询。其中一种情况是查找包含某些元素的数组。这时就可以使用 $all 关键字进行查询。本文将详细介绍在MongoDB中如何使用 $all 进行数组包含...

    9 个月前
  • Serverless 大减负:通过异步优化接口响应速度

    Serverless 是一种新的应用部署方式,它允许我们以函数为中心的方式来构建和部署应用程序。与传统的应用部署方式相比,Serverless 可以有效减少应用开发、部署、运维等环节的负担。

    9 个月前
  • CSS Grid 实现栅格化布局的方法

    CSS Grid 是一种全新的布局方案,它可以让我们更加灵活地进行栅格化布局。在开发前端网页时,栅格化布局是非常常见的一种布局方式,它能够帮助我们快速地实现响应式设计,适配不同的设备和屏幕大小。

    9 个月前
  • ECMAScript 2019 中 Optional Catch Binding 的应用场景

    ECMAScript 2019 引入了 Optional Catch Binding。这个特性允许开发者编写 catch 块时,可以不指定错误对象。Optional Catch Binding 的引入...

    9 个月前
  • Koa 中的参数验证技巧

    前端开发中,经常需要使用 Koa 框架来搭建服务器。但是,当我们需要对传入的参数进行验证时,Koa 框架并没有提供相应的验证功能。为了解决这一问题,本文向大家介绍一些常用的 Koa 中的参数验证技巧。

    9 个月前
  • Material Design 中的 TextInputEditText 使用详解

    Material Design 是谷歌推出的一种设计风格,为 Android 设计提供了非常优美、干净和极富层次感的视觉效果以及出色的用户体验。在 Material Design 中,TextInpu...

    9 个月前
  • 在 Kubernetes 中使用外部存储服务的技术总结

    背景 Kubernetes 是一个开源的容器编排工具,在容器化部署中有着广泛的应用。随着应用规模的不断扩大,容器中的应用数据也越来越多,需要更高效、更持久的存储方式。

    9 个月前
  • 在 Vue.js 单页面应用程序(SPA)中,如何精确地控制页面渲染顺序

    在 Vue.js 的单页面应用程序(SPA)中,页面渲染顺序的控制是一个非常重要的问题。有时我们需要确保某些组件在其他组件之前渲染,或者需要等待某些异步数据加载后才能开始渲染。

    9 个月前
  • 如何用 Express.js 实现 Websockets

    Websockets是一种基于TCP连接的双向通信协议,可以在客户端和服务器之间建立实时的、持续的、双向的通信通道。这种通信模式适合实现一些需要实时性和即时性的场景,比如在线聊天、协同编辑等。

    9 个月前

相关推荐

    暂无文章