Express.js 解决 CORS 跨域问题

阅读时长 4 分钟读完

CORS(跨域资源共享)可能是前端开发中最常见的问题之一。当客户端通过 AJAX 请求向不同源的服务器(比如不同的端口、域名或协议)发送请求时,浏览器会阻止其访问响应数据。这个问题可以通过服务器端的设置来解决。

在 Express.js 中,我们可以使用 CORS 中间件来解决跨域问题。本文将介绍如何在 Express.js 中使用 CORS 中间件,并提供一些示例代码。

安装和使用 CORS 中间件

首先,如果您的应用程序已经使用了 Express.js,请使用以下命令安装 cors 中间件:

然后,在您的 Express.js 应用程序中引入 cors 中间件:

这里,我们使用 app.use()来注册中间件。cors() 可以作为参数传递给 app.use(),以允许所有来源发送请求。如果您需要更精细的控制,可以传递一个选项对象给 cors()

以下是一个允许跨域请求的示例代码:

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

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

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

---------------- -- -- -
  ------------------- -- ------- -- ---- ------
--
展开代码

在这个例子中,我们指定了只允许 http://example.com 发送跨域请求。如果请求不是来自该域,则会被浏览器阻止。

CORS 中间件的选项

除了 origin 之外,CORS 中间件还支持其他选项。

methods

该选项指定允许的 HTTP 请求方法。默认情况下,cors() 中间件支持 GET, PUT, POST, DELETE 和 OPTIONS 方法。您可以使用 methods 选项来修改此行为,例如:

headers

该选项指定单个请求可以带有的 HTTP 头。默认情况下,cors() 中间件允许在请求中携带以下首部字段:Accept, Accept-Language, Content-Language, Content-Type, Authorization. 您可以使用 headers 选项来修改此行为,例如:

maxAge

该选项指定预检请求(OPTIONS 请求)的最大时间,以秒为单位。预检请求用于验证跨源请求。默认情况下,cors() 中间件使用 5 秒作为最大时间。您可以使用 maxAge 选项来修改此行为,例如:

credentials

该选项指定是否允许在跨域请求中包含凭据信息。默认情况下,cors() 中间件不包含凭据信息。您可以使用 credentials 选项来启用凭据信息,例如:

总结

在本文中,我们介绍了如何使用 cors 中间件解决 Express.js 中的跨域问题。我们还提供了示例代码,演示了如何使用 cors 中间件来配置 Express.js 应用程序的 CORS 支持。希望这篇文章为您提供了深入的了解以及指导意义。

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

纠错
反馈

纠错反馈