什么是跨域请求
跨域请求是指一个网站页面请求另一个网站的资源的情况。在 Web 应用中,浏览器限制了从脚本中发起的跨域 HTTP 请求。这种限制可以防止恶意网站通过用户的浏览器发起攻击,但也使得跨域请求变得有些复杂。
如果你有一个 API 服务器和多个客户端应用,那么客户端就会需要跨域请求获得所需的数据。这就需要在 API 服务器上设置一些 CORS(跨域资源共享)配置。
使用 Express.js 处理跨域请求
Express 是一个极受欢迎的 Node.js Web 应用程序框架,其内置支持处理跨域请求。在 Express 中可以通过 cors
中间件快速地实现跨域处理。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---- - ---------------- ----- --- - ---------- ---------------- -- ----- --- -- -------------------- ----- ---- -- - ----- ------------ - - -------- ----- ----- - --- -- ----- ----- ----- ---- -- - -- ----------------------- --- ---------------- -- -- - ------------------- -- ------- -- ---- ------- ---
这是一个基本的 Express 应用,它使用 cors
中间件来允许来自任何域的请求。在具体的应用中,你可能需要根据实际需求来设置一些选项。
配置 CORS 中间件
如果你需要设置特定的 CORS 配置,可以通过传递选项对象来实现。以下选项可以提供更细粒度的控制:
origin
:一个布尔值或字符串数组,用于指定允许的来源域(例如['http://example.com', 'https://example.com']
),默认为*
(允许所有来源)。methods
:一个字符串数组,用于指定允许的HTTP方法(例如['GET', 'POST']
),默认为GET,HEAD,PUT,PATCH,POST,DELETE
。allowedHeaders
:一个字符串数组,用于指定允许的自定义请求头,如['Authorization']
。credentials
:一个布尔值,用于启用凭据。如果设置为true
,则表示允许发送和接收来自客户端的 Cookie(需要在客户端也配置为withCredentials: true
),默认为false
。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---- - ---------------- ----- --- - ---------- ----- ----------- - - ------- --------------------- -------- ------- -------- --------------- ------------------ ------------ ---- -- --------------------------- -- ----- ---- -- --------------------- ----- ---- -- - ----- ----------- - --------- -- --------- ----- ------------ - - -------- ----- -------- ----- --------- ------------- -- ----------------------- --- ---------------- -- -- - ------------------- -- ------- -- ---- ------- ---
需要注意的是,如果你使用了 credentials
选项来启用凭据,那么客户端也需要在请求中设置 withCredentials: true
。
结论
在 Express.js 中处理跨域请求非常容易和直接。使用 cors
中间件,你可以为你的应用程序设置最常见的跨域配置。如果需要更高级的配置,你可以使用选项对象来实现更细粒度的控制。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6705f4d8d91dce0dc8561760