SSE 与 CORS 请求的实现方式

阅读时长 5 分钟读完

在 Web 开发中,服务器与客户端之间的交互变得越来越重要。服务端推送技术和跨域资源共享(CORS)是一些传输数据的方式,向开发人员提供了更多的选择来实现这种交互。

本文将介绍服务器端与前端之间的两种重要的交互方式:SSE 和 CORS,同时给出代码示例,以便读者更好地理解和实践这些交互方式。

SSE

SSE(Server-Sent Events)是指从服务器推送数据到客户端的一种方式。与传统的 HTTP 请求不同,SSE 允许服务器持续地向客户端发送数据,而不是等待客户端请求获取数据。

实现 SSE 的步骤

  1. 在服务器端设置发送事件的流和响应头部。
  2. 在客户端使用 EventSource 对象监听服务器端的事件。
  3. 在服务器端将要发送的数据发送到客户端。

代码示例

下面是一个基本示例。它使用 Node.js 作为服务器端,并使用了 EventSource 对象来监听事件。

Node.js 服务器端代码:

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

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

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

客户端代码:

在上面的代码中,我们使用 setInterval() 函数每秒推送一次数据到客户端。客户端将接收到的事件打印到控制台上。

CORS

CORS 是浏览器使用的一种安全机制。它要求 Web 应用程序防止来自其他域的请求。如果某个资源不允许跨域请求,那么在客户端(浏览器)就无法直接从该资源进行请求。

想要解决这个问题,可以通过在服务端添加一些 HTTP 头字段来允许跨域请求。CORS 提供了一种安全、能够支持资源的访问权限控制的机制。

实现 CORS 的步骤

  1. 服务器端在响应头上添加 Access-Control-Allow-Origin 字段,允许客户端访问该资源。
  2. 客户端使用 XMLHttpRequest 对象发起请求。在请求头中设置对应字段以实现跨域。
  3. 服务器端处理请求并返回数据。

代码示例

下面是一个基本的示例,它使用 Node.js 作为服务器端,同时使用 XHR 对象来处理 CORS 请求。

Node.js 服务器端代码:

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

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

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

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

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

客户端代码:

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

在服务器端代码中,如果 Origin 头使包含在允许的跨域地址中,就启用 Access-Control-Allow-Origin 头来允许跨域请求。在客户端代码中,我们使用了 XHR 对象来完成请求。

可以看到,CORS 的实现比 SSE 更加复杂。但是,CORS 所提供的功能也更加丰富。它可以通过添加请求头信息来实现授权、缩短超时时间和允许 cookie 等进一步的资源控制。

总结

本文介绍了 SSE 和 CORS 在服务器和客户端交互中的实现方式和相关的代码示例。它们都提供了通过 Web 应用程序完成数据传输的机制。然而,它们的目标和使用都有所不同。

SSE 用于能持续地向客户端推送数据的场景,而 CORS 用于控制跨域请求。浏览器开发人员可以根据需要选择这两种技术来实现数据交互。

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

纠错
反馈