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