解决 Fastify 中的 CORS 跨域问题

什么是 CORS

CORS(Cross-Origin Resource Sharing),即跨域资源共享,是一种用于解决跨域访问问题的标准。当一个请求从一个源(域、协议、端口)发起,向另一个源发出请求时,就会触发跨域问题。CORS 通过在服务器端设置响应头来告诉浏览器哪些跨域请求可以被接受,从而解决跨域问题。

Fastify 中的 CORS

Fastify 是一个快速、低开销并且可扩展的 Node.js Web 框架。Fastify 默认没有开启 CORS,因此如果需要在 Fastify 中处理跨域问题,需要手动设置响应头。

解决方法

1. 手动设置响应头

在 Fastify 的路由处理函数中,可以手动设置响应头,例如:

这里的 reply.header('Access-Control-Allow-Origin', '*') 表示允许所有域名的请求访问该接口。如果要限制某些域名的访问,可以将 * 替换为具体的域名。

2. 使用 fastify-cors 插件

Fastify 社区提供了一个 fastify-cors 插件,可以方便地处理跨域问题。安装插件:

在 Fastify 应用中注册插件:

这里的 origin: '*' 表示允许所有域名的请求访问该接口。如果要限制某些域名的访问,可以将 * 替换为具体的域名。

fastify-cors 插件还支持更多的配置项,例如:

这里的配置项含义如下:

  • origin:允许访问的域名,可以是字符串或字符串数组。
  • methods:允许访问的 HTTP 方法,可以是字符串或字符串数组。
  • allowedHeaders:允许访问的请求头,可以是字符串或字符串数组。
  • exposedHeaders:允许访问的响应头,可以是字符串或字符串数组。
  • credentials:是否允许携带 Cookie,可以是布尔值或字符串。

示例代码

总结

CORS 跨域问题是 Web 开发中常见的问题,Fastify 默认不开启 CORS,需要手动设置响应头或使用 fastify-cors 插件来解决跨域问题。使用 fastify-cors 插件可以更方便地处理跨域问题,并支持更多的配置项。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/655ac87cd2f5e1655d4fc3d1


纠错
反馈