gpt4 book ai didi

javascript - SSE 未捕获错误 : SECURITY_ERR: DOM Exception 18 with a server that provides Server Sent Events (SSE)

转载 作者:太空狗 更新时间:2023-10-29 15:08:49 26 4
gpt4 key购买 nike

我正在尝试将浏览器连接到提供服务器发送事件 (SSE) 的服务器。此服务器的域与原始服务器的域不同。例如,如果您调用 http://d1.example.com/page,此页面将尝试连接到 http://d2.example.com/subscribe 。尝试这样做会提示以下错误:

Uncaught Error :SECURITY_ERR:DOM 异常 18

在线:

var source = new EventSource("http://d2.example.com/subscribe")

我该如何解决?

更新(我尝试过的解决方案):

1-CORS

我试过了 CORS通过将 Access-Control-Allow-Origin:* 添加到我的网络服务 d2.example.com 的 header 中。它没有解决 EventSource 问题,即使 $.get("http://d2.example.com")d1.example.com< 调用 页面现在工作正常!我认为 SSE 适用于普通的 HTTP 请求,那么为什么它不适用于 Chrome?

2- 重定向

我使用的是 httpd 服务器,所以我在 d1.example.com 虚拟主机中创建了一个重定向规则,将 SSE 请求传递给 d2.example.com。它与 Firefox 完美配合。而Chrome则没有提示任何错误,也没有连接到SSE服务器。看起来它转储了整个 EventSource 命令。看起来这个解决方案永远行不通,所以让我们继续......

3-反向代理

两个浏览器都连接到 d1.example.com/subscribe,这基本上是通过反向代理连接到 d2.example.com。但是 on_close 事件永远不会被捕获,即使浏览器已关闭。这是有道理的,因为 d2 服务器现在正在与代理服务器建立 channel 。如何将 on_close 事件从代理服务器转发到 d2?

是否有任何不同的方法可以使这项工作成功?

最佳答案

这很可能是跨源资源共享问题,您必须在相关域上启用它。

http://enable-cors.org/

作为MDN说:

Note: Although it's not yet part of the standard, EventSource supports CORS in Firefox 11 and later. This is expected to become standard soon.

关于javascript - SSE 未捕获错误 : SECURITY_ERR: DOM Exception 18 with a server that provides Server Sent Events (SSE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14049810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com