聊聊 Timing-Allow-Origin 和 Access-Control-Expose-Headers

阅读时长 4 分钟读完

在前端开发中,CORS(跨域资源共享)是一个常见的问题。而当我们需要对跨域请求进行控制时,Timing-Allow-Origin 和 Access-Control-Expose-Headers 是两个非常重要的响应头。

Timing-Allow-Origin

Timing-Allow-Origin 响应头是用于允许浏览器访问服务器性能时间信息的一种机制。它可以帮助开发者了解到网络请求和操作的性能数据,从而优化网站或移动应用程序的性能。

例如,在一个跨域场景下,如果你想要在前端统计某个 AJAX 请求的耗时,并将结果上传至后台进行分析,那么你就需要使用 Timing-Allow-Origin 来获取请求的时间信息。

设置 Timing-Allow-Origin 响应头十分简单,只需要在服务器端添加以下代码即可:

这样,浏览器就会允许前端访问 Timing-Allow-Origin 响应头,从而获取请求的时间信息。

Access-Control-Expose-Headers

Access-Control-Expose-Headers 响应头则是用于指定哪些响应头可以被客户端访问的一种机制。默认情况下,浏览器只允许访问一些基本的响应头,如 Cache-Control、Content-Language、Content-Type 等,而其他自定义的响应头都无法被访问。

如果你想要允许客户端访问自定义的响应头,就需要使用 Access-Control-Expose-Headers。例如,在一个跨域场景下,你可能需要在响应头中返回一些自定义的信息,如当前用户的授权信息等。这时,你就可以使用 Access-Control-Expose-Headers 来将这些信息暴露给客户端。

设置 Access-Control-Expose-Headers 响应头也非常简单,只需要在服务器端添加以下代码即可:

这样,浏览器就会允许客户端访问 Authorization 和 X-Custom-Header 这两个响应头了。

示例代码

下面是一个示例代码,演示了如何在 Node.js 中设置 Timing-Allow-Origin 和 Access-Control-Expose-Headers 响应头:

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

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

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

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

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

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

在这个示例代码中,我们使用 Node.js 创建了一个简单的 HTTP 服务器,并添加了一些常见的 CORS 响应头。当客户端发送一个 GET 请求到 /api/data 时,服务器会记录请求时间,并将 Timing-Allow-Origin 响应头设置为 *,以便让客户端获取请求的时间信息。同时,服务器还将 Access-Control-Expose-Headers 响应头设置为 Authorization 和 Timing-Allow-Origin,以便客户端可以访问这两个

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

纠错
反馈