请解释什么是跨域资源共享 (CORS)?如何配置 CORS?

推荐答案

跨域资源共享(CORS)是一种机制,允许网页从不同的域(即跨域)请求资源。它通过使用额外的 HTTP 头来告诉浏览器,允许某个网页从不同的域访问资源。

如何配置 CORS

在 Node.js 中,可以通过使用 cors 中间件来配置 CORS。以下是一个简单的示例:

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

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

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

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

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

本题详细解读

什么是跨域资源共享 (CORS)

跨域资源共享(CORS)是一种安全机制,用于控制浏览器是否允许网页从不同的域请求资源。默认情况下,浏览器会阻止跨域请求,以防止恶意网站访问用户的敏感数据。CORS 通过在 HTTP 头中添加特定的字段来告诉浏览器,允许某个网页从不同的域访问资源。

CORS 的工作原理

当浏览器发起跨域请求时,会先发送一个预检请求(Preflight Request),这是一个 OPTIONS 请求,用于检查服务器是否允许实际的请求。服务器通过响应头中的 Access-Control-Allow-Origin 字段来告诉浏览器是否允许跨域请求。

配置 CORS 的常见选项

  • origin: 允许访问资源的来源。可以是一个字符串(如 'https://example.com'),也可以是一个数组(如 ['https://example.com', 'https://another-domain.com']),或者设置为 '*' 允许所有来源。
  • methods: 允许的 HTTP 方法,如 ['GET', 'POST', 'PUT', 'DELETE']
  • allowedHeaders: 允许的请求头,如 ['Content-Type', 'Authorization']
  • credentials: 是否允许发送凭据(如 cookies),设置为 true 时,Access-Control-Allow-Origin 不能为 '*'

示例配置

通过以上配置,服务器将允许来自 https://example.com 的跨域请求,并且允许使用 GETPOSTPUTDELETE 方法,同时允许 Content-TypeAuthorization 请求头,并且允许发送凭据。

纠错
反馈