在 Express.js 中使用 CORS 的最佳实践

阅读时长 3 分钟读完

CORS(跨来源资源共享)是一种安全机制,允许浏览器从一个源头访问另一个源头的资源。在前后端分离的开发模式下,CORS 是不可或缺的技术之一。在 Express.js 中使用 CORS,需要遵循一些最佳实践,以确保应用程序的安全性和可靠性。

什么是 CORS?

CORS 是一种基于 HTTP 头信息的机制,用于告知浏览器是否允许跨域请求。当浏览器从一个源头向另一个源头发起请求时,如果没有相应的 CORS 设置,则浏览器会拦截该请求,并返回一个错误信息。要解决这个问题,我们需要在服务端添加相应的 CORS 设置,以便浏览器可以跨域请求。

在 Express.js 中启用 CORS

在 Express.js 中,可以通过 cors 包来轻松地配置 CORS。首先,安装 cors 包:

然后,在服务器端的代码中,使用以下代码来启用 CORS:

这样就可以通过默认设置启用所有的 CORS 请求了。

配置 CORS

除了使用默认设置外,也可以通过配置选项来自定义 CORS。以下是一些常用的配置选项:

  • origin:设置允许跨域请求的来源。可以是单个字符串(如 http://example.com),也可以是一个数组或函数,对于每个请求,将检查其来源是否在该列表中。如果未指定,则允许所有来源。
  • methods:设置允许的 HTTP 方法。默认情况下,允许 GET、HEAD 和 POST 方法。
  • allowedHeaders:设置允许的请求头信息。
  • exposedHeaders:设置服务器端可以公开的响应头信息。
  • credentials:允许跨域请求发送凭据包括 cookie。

例如,以下代码片段演示了如何配置 CORS,只允许来自特定来源和响应指定的请求头信息:

跨域会话

默认情况下,CORS 不会传递浏览器的 Cookie 或其他凭据。如果要支持带有凭据的跨域请求(例如通过 Cookie 进行身份验证),可以将 credentials 选项设置为 true

在客户端发起带有凭据的请求时,必须将 withCredentials 属性设置为 true。例如,使用 Ajax 发送带有 Cookie 的跨域请求的示例如下:

安全性考虑

CORS 可能会导致安全风险,允许来自不受信任的源头的请求。要确保安全性,可以采取以下措施:

  • 限制允许的来源:只允许来自特定源头的请求。
  • 限制允许的 HTTP 方法:只允许特定的 HTTP 方法进行请求。
  • 显示的设置 Access-Control-Allow-Credentials 头信息,以确保始终允许跨域请求时正确传递凭据信息。

结论

在本文中,我们介绍了在 Express.js 中使用 CORS 的最佳实践,并提供了一些

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

纠错
反馈