Express.js 中间件 CORS 的实现方法

阅读时长 4 分钟读完

在前端开发中,常常需要通过 Ajax 请求跨域获取数据。但是,由于浏览器的同源策略,使得跨域请求不被允许。为了解决这个问题,我们需要在服务器端设置 CORS(跨域资源共享)。

在 Node.js 中,Express.js 是一个非常流行的 Web 框架。通过使用 Express.js 的中间件,我们可以非常方便地实现 CORS,允许跨域请求。本文将介绍 CORS 的实现方法,并提供示例代码。

什么是 CORS?

CORS(Cross-Origin Resource Sharing,跨域资源共享)是一种机制,允许 Web 页面向跨源服务器(即不同源的服务器)发送 XMLHttpRequest 请求,从而克服了浏览器的同源策略限制。与 JSONP 相比,CORS 是一种更加标准化、正式的跨域解决方案。

如何实现 CORS?

在 Express.js 中,我们可以使用中间件实现 CORS。所谓中间件,就是在请求(request)和响应(response)之间进行处理的函数。在 Express.js 中,中间件函数可以加入一个序列,依次执行。使用中间件,我们可以拦截请求并对其进行处理,然后再交给后续的中间件或处理函数。

要实现 CORS,我们可以编写一个中间件函数,在响应头中添加 Access-Control-Allow-Origin 参数。

这个中间件函数的作用是在响应头中添加以下参数:

  • Access-Control-Allow-Origin:允许跨域访问的域名,* 表示允许任何域名访问;
  • Access-Control-Allow-Methods:允许跨域访问的 HTTP 动词;
  • Access-Control-Allow-Headers:允许跨域访问的请求头,Content-Type 和 Authorization 表示允许提交带有这些请求头的请求。

在 Express.js 中,使用 app.use() 函数注册中间件,并指定处理函数。这个函数的三个参数分别是请求对象、响应对象和 next 函数。

示例代码

以下是一个示例代码,演示了如何在 Express.js 中实现 CORS。

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

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

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

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

在这个示例中,我们使用 app.use() 函数注册了一个中间件函数,该函数添加了响应头中的 Access-Control-Allow-* 参数。我们还定义了一个 GET 请求处理函数 /user,返回了一个用户列表。通过访问 http://localhost:3000/user,我们可以获取这个用户列表数据。

总结

本文介绍了在 Express.js 中实现 CORS 的方法。通过编写中间件函数,在响应头中添加 Access-Control-Allow-* 参数,我们可以允许跨域访问。希望这篇文章能为初学者提供一些指导,帮助他们更好地理解和应用 CORS。

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

纠错
反馈