[注意:如果您能提供请求和响应的完整跟踪,那就更好了。由于多种原因,可能会出现此问题。我将陈述两个解决方案。所以,试试那些。如果这些不起作用,请提供请求和响应的完整跟踪。]
1.第一个解决方案:
有时,由于自签名证书会发生此类错误。要解决此问题,请打开开发人员工具/选项,然后转到网络选项卡。您将看到一个请求列表。选择由于 CORS 而失败的请求(即,它给了你这个原因:CORS 请求没有成功)。打开它(即单击它)。如果您的问题与证书有关,您将看到以下错误消息:
出现错误:SEC_ERROR_INADEQUATE_KEY_USAGE
要解决此问题,请转到导致此问题的 url 并手动接受证书。
2。第二种解决方案:
在开发者工具/选项的网络选项卡中检查请求(这是CORS的原因)(与1.第一个解决方案中所述相同)。您会找到一个已转移列。看看失败请求的 Transferred 列中的内容。如果写为Blocked By Some Ad-Blocker,则禁用 Ad-Blocker。您的请求将正常工作。
[P.S.]:这些解决方案是基于假设提出的。希望这些作品。如果这两个不起作用,请提供有关请求和响应的更多信息。还要检查this。
3.第三个也是最后一个解决方案:
[注意:此解决方案可能无法直接解决您的问题,但它会为您提供替代解决方案,并深入了解您的问题是什么以及如何解决它]
在阅读下面的解决方案之前,请阅读this 以了解 Access-Control-Allow-Origin 的工作原理(这是 CORS 错误的原因)。
让我先解释一下 peerjs 的工作原理:
PEERJS 基于 PEER ID 工作。因此,您必须从 PEERJS CLOUD SERVER 获得一些 PEER ID,或者您必须在 PEER CONSTRUCTOR 中为自己提供一个,即 new Peer(" some-peer-id")。 Peer id 必须是唯一的,因为它必须唯一地检测所有用户。而且,peerjs 使用这个 PEER ID 在用户之间发送和接收数据。
现在,您应该知道,您正在使用 PEERJS CLOUD SERVER 来获取/生成唯一的 peer id,这是默认服务器 PEERJS 使用,除非您指定要使用其他服务器。
现在让我解释一下您为什么会遇到这个问题:
既然你已经知道 CORS 是如何工作的,你可能已经猜到了,https://unpkg.com/peerjs@1.3.1/dist/peerjs.min.js(下载的 js file) 正在调用 https://0.peerjs.com 以检索/生成新的唯一 PEER ID。但是,https://your.website.com 的这个请求由于某种原因没有 Access-Control-Allow-Origin 访问权限,也可能是中间件问题。因此,很难判断问题实际发生在哪里。但可以肯定的是,编写代码不是你的错:D。
我希望你能清楚我上面所说的所有概念。
现在,解决方案:
Alternative-appraoch-1(使用 PEERJS 云服务器和您自己提供的 id):
在这种方法中,您必须生成自己唯一的PEER ID。因此,“https://your.website.com”不必调用“https://0.peerjs.com”来获取唯一的对等 ID。 [注意:使您的对等 id 足够大,使其始终唯一,至少 64 个字符长]
这样可以避免CORS问题。
更新:
刚刚在github上看到一个新问题,说public peerjs云服务器现在不稳定或者不能正常工作。它只是给出如下错误:Firefox 无法在地址 wss://0.peerjs.com/peerjs?key=peerjs&id=123222589562487856955685485555&token=ocyxworx62i 和 Chrome 中建立与服务器的连接:连接建立错误:net::ERR_CONNECTION_REFUSED。详情请查看here。所以,最好使用自己的服务器(见下一个方法)。
Alternative-appraoch-2(使用您自己的 peerjs 服务器):
您可以托管自己的 peerjs 服务器,而不是 PEERJS CLOUD SERVER。通过这种方式,您可以允许访问您想要的任何人/任何网站。如果你想知道如何托管 peerjs 服务器,你可以访问here。
[P.S.]:我在 github 上研究过 pearjs 的问题。在阅读了所有这些问题之后,似乎最好使用自己的服务器而不是使用 pearjs 云。每个新版本的 peerjs 都有很多不同的问题。而且主要与与 peerjs 云的连接有关,而且我猜 peerjs 云也不稳定。他们之前在 0.peerjs.com:9000 托管它(不安全)。但现在在 0.peerjs.com:443。
我之前没有使用过 peerjs,也没有设置过 peerjs 服务器。如果你想设置一个,我希望社区能够帮助你如何正确地做到这一点。