CORS 库 for JavaScript (Node.js): 完整指南
\n\n1. 什么是 CORS 以及为什么需要它
\n\n CORS(跨源资源共享) 是一种在浏览器中实现的安全机制,用于控制从另一个域名(源)加载的网页对资源(API、字体、脚本)的访问。默认情况下,浏览器会阻止由脚本发起的 HTTP 请求(例如通过 fetch 或 XMLHttpRequest),如果这些请求指向与加载页面不同的域名。这可以防止 CSRF(跨站请求伪造)攻击和数据泄露。\n
\n Node.js 和 Express 的 cors 库是一种中间件,允许开发者在服务器端轻松配置和管理 CORS 策略。无需手动编写标头(Access-Control-Allow-Origin、Access-Control-Allow-Methods 等)和处理预检请求(使用 OPTIONS 方法的 preflight 请求),该库自动完成整个过程。它集成到 Express 的请求处理链中,并向响应添加必要的标头。\n
\n 为什么需要它? 如果您正在开发一个 Node.js API,该 API 将被前端应用程序(React、Vue、Angular)、移动应用程序或来自另一个域名的第三方服务(例如,api.mysite.com 用于 app.mysite.com)使用,那么您必须配置 CORS。否则,浏览器将直接阻止请求,用户将在控制台中看到错误。cors 库使这种配置变得灵活、安全且简单。\n
2. 安装
\n通过包管理器 npm(Node 包管理器)进行安装。请确保您已安装 Node.js 和 npm。
npm install cors\n 安装后,该包将被添加到 node_modules 中,并且其记录将出现在 package.json 文件中。
如果您使用 yarn:
yarn add cors\n 3. 快速入门 — 最小工作示例
\n使用 CORS 的最简单方法是将其对所有请求启用。这适用于开发或公共 API,其中允许从任何域名进行访问。
\nconst express = require('express');\nconst cors = require('cors');\n\nconst app = express();\n\n// 为所有路由启用 CORS\napp.use(cors());\n\napp.get('/api/data', (req, res) => {\n res.json({ message: '此响应允许来自所有源!' });\n});\n\napp.listen(3000, () => {\n console.log('服务器在端口 3000 上运行');\n});\n 在此示例中,来自任何域名(例如 http://localhost:8080 或 https://example.com)对 /api/data 的任何请求都将被成功处理。浏览器不会阻止响应。
4. 主要方法/函数/类
\ncors 库提供了一个主要函数 — cors(options),它返回一个中间件函数。然而,设置通过 options 对象传递,这提供了极大的灵活性。让我们看看 8 个关键选项和方法。
4.1. cors() — 基本配置(允许所有)
\n 签名: cors(options?: CorsOptions)
功能: 创建一个中间件,向响应添加 CORS 标头。不带参数时,允许从任何源访问。