在前端开发中,CORS(跨域资源共享)是一个常见的问题。而当我们需要对跨域请求进行控制时,Timing-Allow-Origin 和 Access-Control-Expose-Headers 是两个非常重要的响应头。
Timing-Allow-Origin
Timing-Allow-Origin 响应头是用于允许浏览器访问服务器性能时间信息的一种机制。它可以帮助开发者了解到网络请求和操作的性能数据,从而优化网站或移动应用程序的性能。
例如,在一个跨域场景下,如果你想要在前端统计某个 AJAX 请求的耗时,并将结果上传至后台进行分析,那么你就需要使用 Timing-Allow-Origin 来获取请求的时间信息。
设置 Timing-Allow-Origin 响应头十分简单,只需要在服务器端添加以下代码即可:
Access-Control-Expose-Headers: 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 响应头也非常简单,只需要在服务器端添加以下代码即可:
Access-Control-Expose-Headers: Authorization, X-Custom-Header
这样,浏览器就会允许客户端访问 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