不同源策略(Cross-origin resource sharing, CORS)是一个 Web 安全机制,可以让 Web 应用程序在一个网页上与其他域名提供的资源进行数据交互。然而,由于浏览器同源限制的存在,浏览器可能会拒绝来自不同源的资源请求。
Express.js 是一个流行的 Node.js Web 框架,它提供了几种方案来解决跨域请求的问题。本文将介绍使用 CORS 的最佳实践,并提供实例代码来实现跨域请求。
什么是 CORS?
简单地说,CORS 是一种安全机制,它通过在请求头中包含特殊字段,允许 Web 应用程序从其他域名或端口请求资源。这可以防止非授权的跨域请求攻击,同时让 Web 开发人员更方便地使用 Web 应用程序之间的数据。
Express.js 中使用 CORS 的最佳实践
在 Express.js 中使用 CORS,我们可以使用 cors 中间件来轻松处理跨域请求。cors 中间件会添加所需的 HTTP 响应头,以便浏览器可以安全地访问来自其他域名的资源。
以下是在 Express.js 中启用 CORS 的最佳实践:
- 安装 cors 中间件 在命令行中执行以下命令安装 cors 中间件:
npm install cors
- 在 Express.js 应用程序中引入 cors 中间件 在 Express.js 应用程序的入口文件中引入 cors 中间件:
const cors = require('cors') const express = require('express') const app = express() // 使用 cors 中间件 app.use(cors())
接下来,我们将介绍更多选项和示例。
选项
cors 中间件提供了几个选项,可以根据您的需求进行配置:
- origin: 设置允许请求的源。默认情况下,CORS 中间件允许所有源。您可以使用一个字符串来指定单个源,或使用一个正则表达式来匹配多个源,或使用一个函数来动态确定允许的源。
- methods: 设置允许请求的方法。默认情况下,CORS 中间件允许 GET、HEAD 和 POST 方法。
- allowedHeaders: 设置允许请求头的列表。默认情况下,CORS 中间件允许 Content-Type、Authorization 和 X-Requested-With。
- exposedHeaders: 设置允许客户端访问的响应头列表。默认情况下,CORS 中间件不会把任何响应头暴露给客户端。
- credentials: 设置是否允许发送凭据到服务端。默认情况下,CORS 中间件不允许发送凭据。
- preflightContinue: 设置是否允许预检请求的继续。默认情况下,CORS 中间件停止预检请求。
- optionsSuccessStatus: 设置响应的 HTTP 状态码。默认情况下,CORS 中间件响应 204 No Content 状态码。
示例代码
以下是使用 CORS 中间件在 Express.js 应用程序中处理跨域请求的示例代码:
// javascriptcn.com 代码示例 const cors = require('cors') const express = require('express') const app = express() // 允许所有源的请求 app.use(cors()) // 允许指定源的请求 const allowedOrigins = ['http://localhost:3000', 'https://example.com'] app.use(cors({ origin: function (origin, callback) { if (!origin || allowedOrigins.indexOf(origin) !== -1) { callback(null, true) } else { callback(new Error('Not allowed by CORS')) } } })) // 允许带凭据的请求 app.use(cors({ credentials: true }))
总结
CORS 是一种安全机制,可以让 Web 应用程序在一个网页上与其他域名提供的资源进行数据交互。在 Express.js 中启用 CORS,我们可以使用 cors 中间件来轻松地处理跨域请求。本文提供了使用 CORS 的最佳实践和实例代码,希望对您有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/654854647d4982a6eb29ade5