Fastify 应用中如何处理 CORS

阅读时长 5 分钟读完

跨域资源共享(CORS)是指在客户端通过 JavaScript 向不同域名的服务器请求资源时产生的安全机制。由于浏览器存在同源策略,以往只能通过代理接口的方式支持跨域请求,而 CORS 机制通过添加一些 HTTP 头信息,让服务器能够和浏览器协商,并决定是否允许跨域请求。

对于 Fastify 应用开发者而言,要正确、安全地处理 CORS 实现跨域请求,本文将介绍如何配置 Fastify-CORS 插件并提供详细的学习和指导意义。

使用 Fastify-CORS 插件

Fastify-CORS 是 Fastify 生态圈中一款专门用于处理跨域资源共享的插件。该插件使用领先的 CORS 库,提供了一个简单的 API 来设置跨域请求的选项。Fastify-CORS 插件支持灵活的配置选项,包括允许所有源请求、允许多个域名请求、允许带凭证的请求等。

安装 Fastify-CORS 插件

安装 Fastify-CORS 插件很简单,只需要使用 npm 指令即可:

配置 Fastify-CORS 插件

借助 Fastify-CORS 插件,Fastify 应用只需一步就可以快速配置支持跨域请求。定义以下路由代码:

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

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

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

----- ----- - ----- -- -- -
  --- -
    ----- -----------------
    -------------------- --------- -- -------------------------------
  - ----- ----- -
    -------------------
    ----------------
  -
--
--------
展开代码

在注册 Fastify-CORS 插件时,指定 origin 选项的值为 true,表示接受来自所有源的请求。如果你只允许指定的域名发起请求,可以在 origin 中设置对应的域名或允许的域名数组。

这是基本配置案例,可以在此基础上进行进一步的配置以满足不同的业务需求:

-- -------------------- ---- -------
------------------ -
  ------- ---------------------- ------------------------
  -------- ------- ------- ------ ----------
  --------------- ---------------- -----------------
  ------------ -----
  ------- ------
  ------------------ ------
  --------------------- ---
---
展开代码

让我们看看每个选项的含义:

  • origin:允许的请求源,可以是字符串、正则表达式或数组。
  • methods:允许使用的 HTTP 方法,例如 GET、POST 等。
  • allowedHeaders:允许客户端发送的请求头列表。
  • credentials:指示是否允许发送带凭据的请求(例如 cookies、授权头等)。
  • maxAge:指定 preflight 请求的最大时间,单位为秒。
  • preflightContinue:是否继续处理 preflight 请求。
  • optionsSuccessStatus:定义返回的状态码,默认为 204。

示例代码

在 Fastify 应用中使用 Fastify-CORS 插件,以下是一个基本的示例代码。

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

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

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

-----------------
展开代码

上述示例代码中,Fastify 应用将会允许来自以下域名的请求:

允许的 HTTP 方法包括 GET、POST、PUT 和 DELETE。同时,应用将在使用预检查缓存时等待 86400 秒。使用用户凭据处理跨域请求,并支持头信息 Authorization、Content-Type。最后,Fastify-CORS 插件会返回 204 状态码,表示请求正常处理,没有内容需要返回。

总结

Fastify-CORS 插件使 Fastify 应用程序处理跨域资源共享时变得更加简单。使用该插件时,可以根据实际情况灵活配置选项,以更好地支持业务需求。若你需要管理跨域资源共享,建议使用 Fastify-CORS 插件来保证应用程序的高效性及安全性。

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

纠错
反馈

纠错反馈