小编典典

Web套接字使ajax / CORS过时了吗?

ajax

当在所有Web浏览器中使用Web套接字时,Ajax是否会过时?

如果我可以使用Web套接字实时获取数据并更新数据,为什么会需要ajax?即使我在应用程序启动时仅使用ajax来获取数据一次,我仍然可能想查看一段时间后该数据是否已更改。

Web套接字是否可以在跨域中使用或仅起源于同一域?


阅读 203

收藏
2020-07-26

共1个答案

小编典典

WebSockets不会完全淘汰AJAX,而WebSockets可以跨域。

AJAX

AJAX机制可以与普通Web服务器一起使用。在最基本的层次上,AJAX只是网页发出HTTP请求的一种方式。WebSockets是一个较低级别的协议,并且需要WebSockets服务器(内置于Web服务器,独立服务器或从Web服务器代理至独立服务器)。

使用WebSockets,帧和有效负载由应用程序确定。您可以在客户端和服务器之间来回发送HTML / XML / JSON,但是您不必这样做。
AJAX是HTTP 。WebSockets具有HTTP友好握手,但 WebSockets不是HTTP
。WebSockets是一种双向协议,它比HTTP更接近原始套接字(有意地)。WebSockets有效负载数据在标准的当前版本中采用UTF-8编码,但是在将来的版本中可能会更改/扩展。

因此,即使在所有客户端都原生支持WebSocket的世界中,也可能总会有AJAX类型请求的位置。WebSockets正在尝试解决AJAX不具备能力或具备少量能力的情况(因为WebSockets是双向的且开销较低)。但是WebSocket并不能替代AJAX的所有用途。

跨域

是的
,WebSockets支持跨域。建立连接的初始握手传达了源策略信息。Wikipedia页面显示了典型握手的示例:http
:
//en.wikipedia.org/wiki/WebSockets

2020-07-26