如何使用 cors 中间件处理 Express.js 中的跨域请求

阅读时长 4 分钟读完

在 Web 开发中,跨域请求是一个常见的问题。跨域请求指的是浏览器向服务端发起请求时,请求的域名与服务端的域名不同。在 Express.js 中可以使用 cors 中间件来处理跨域请求,本文将详细介绍如何使用 cors 中间件,包括跨域请求的来源、预请求和通过 cors 中间件处理跨域请求的步骤等。

跨域请求的来源

在介绍如何使用 cors 中间件处理跨域请求之前,先了解一下跨域请求的来源。跨域请求可能源自不同的域名、IP 地址和端口,以下是一些常见的跨域请求情况:

  • 基于域名的跨域请求:如从 http://www.example.comhttp://api.example.com 发送请求。
  • 基于IP 地址的跨域请求:如从 http://192.168.0.1http://192.168.0.2 发送请求。
  • 基于端口的跨域请求:如从 http://localhost:3000http://localhost:4000 发送请求。

预检请求

在处理跨域请求时,浏览器会发送一个预检请求,用于确定是否可以安全地发生跨域请求。预检请求是一种 HTTP 请求,采用 OPTIONS 方法,用于查询服务器是否允许跨域请求。

以下是预检请求的一些特征:

  • 请求头中包含一个 Origin 字段,用于标识请求的来源。
  • 请求头中包含一个 Access-Control-Request-Method 字段,用于指定实际请求将使用的 HTTP 方法。
  • 请求头中可能包含其他许多字段,用于表示实际请求中的其他信息,例如请求头的类型等。

当服务端返回 Access-Control-Allow-OriginAccess-Control-Allow-Methods 头时,预检请求成功。这两个头会告诉浏览器实际请求是否可以发生跨域,并指定了浏览器可以发送的 HTTP 方法。

处理跨域请求的步骤

在 Express.js 中使用 cors 中间件处理跨域请求步骤如下:

  1. 安装 cors 中间件
  1. 在 Express.js 应用程序中使用 cors 中间件

在 Express.js 中使用 cors 中间件非常简单,只需要在应用程序中使用 app.use(cors()) 即可。这样就可以接受来自任意域、任意 IP 地址和端口的跨域请求。

  1. 限制跨域请求

如果需要限制跨域请求,可以使用选项参数,例如:

通过设置选项参数来限制跨域请求。

示例代码

下面是使用 cors 中间件处理跨域请求的完整示例代码:

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

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

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

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

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

这个示例代码设置了一个 GET 请求,用于获取用户列表。使用 app.use(cors()) 来处理跨域请求。具体代码实现可以参考以上步骤中的示例代码。

总结

本文介绍了使用 cors 中间件处理 Express.js 中的跨域请求的方法,包括跨域请求的来源、预请求以及通过 cors 中间件处理跨域请求的步骤等。在实际应用中,我们需要根据具体情况来调整 cors 中间件的选项参数,来限制跨域请求的安全性。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64759f3a968c7c53b02a260e

纠错
反馈