[Примечание: было бы лучше, если бы вы могли предоставить полную трассировку запросов и ответов. Эта проблема может возникнуть по нескольким причинам. Я приведу два решения. Итак, попробуйте те. Если это не сработает, предоставьте полную трассировку запросов и ответов.]
<сильный>1. Первое решение:
Иногда этот тип ошибки возникает из-за самозаверяющего сертификата. Чтобы решить эту проблему, откройте инструменты/параметры разработчика, затем перейдите на вкладку «Сеть». Вы увидите список запросов. Выберите запрос, который не был выполнен из-за CORS (т. е. который дал вам эту Причину: запрос CORS не выполнен). Откройте его (т.е. щелкните по нему). Если ваша проблема связана с сертификатом, вы увидите следующее сообщение об ошибке:
ПРОИЗОШЛА ОШИБКА: SEC_ERROR_INADEQUATE_KEY_USAGE
Чтобы решить эту проблему, перейдите по URL-адресу, который является причиной этой проблемы, и примите сертификат вручную.
<сильный>2. Второе решение:
Проверьте запрос (который является причиной CORS) на вкладке сети инструментов/параметров разработчика (так же, как описано в 1. Первое решение). Вы найдете столбец Перенесено. Посмотрите, что написано в столбце Передано неудачного запроса. Если написано Заблокировано каким-то блокировщиком рекламы, то отключите блокировщик рекламы. Ваш запрос будет работать нормально.
[P.S.]: Эти решения предлагаются на предположениях. Надеюсь, эти работы. Если эти два не работают, предоставьте дополнительную информацию о запросах и ответах. Также проверьте это.
<сильный>3. Третье и последнее решение:
[Примечание: это решение может не решить вашу проблему напрямую, но оно даст вам альтернативное решение, а также понимание того, в чем заключается ваша проблема и как ее обойти]
Прежде чем читать приведенное ниже решение, прочтите это, чтобы понять, как Access -Control-Allow-Origin работает (это причина ошибки CORS).
Позвольте мне сначала объяснить, как работает peerjs:
PEERJS работает на основе PEER ID. Таким образом, вы должны получить некоторый PEER ID либо с PEERJS CLOUD SERVER, либо предоставить его себе в PEER CONSTRUCTOR, т. е. новый Peer (некоторый -peer-id). Peer id должен быть уникальным, потому что необходимо однозначно определять всех пользователей. Кроме того, peerjs использует этот PEER ID для отправки и получения данных от пользователя к пользователю.
Теперь вы должны знать, что вы используете PEERJS CLOUD SERVER для получения/генерации уникального идентификатора узла, который является сервером по умолчанию, который PEERJS использует, если только вы указали какой-то другой сервер для использования.
Теперь позвольте мне объяснить, почему вы столкнулись с этой проблемой:
Поскольку вы уже знаете, как работает CORS, вы, возможно, уже догадались, что https://unpkg.com/[email protected]/dist/peerjs.min.js (загруженный файл js) вызов https://0.peerjs.com для извлечения/создания новых уникальных < strong>ИДЕНТИФИКАТОР PEER. Но этот запрос от https://your.website.com не имеет Access-Control-Allow-Origin по какой-то причине, это также может быть проблемой промежуточного программного обеспечения. Таким образом, трудно сказать, где на самом деле возникает проблема. Но одно можно сказать наверняка, это не ваша вина в написании кода: D.
Я надеюсь, что все концепции, которые я изложил выше, вам ясны.
Теперь к решениям:
Альтернативный подход-1 (с использованием PEERJS CLOUD SERVER И предоставленного вами идентификатора):
При таком подходе вы должны создать свой собственный уникальный PEER ID. Таким образом, https://your.website.com не должен вызывать https://0.peerjs.com для получения уникального идентификатора узла. [Примечание: сделайте идентификатор пира достаточно большим, чтобы он всегда был уникальным, длиной не менее 64 символов]
Таким образом, вы можете избежать проблемы CORS.
Обновление:
Я только что увидел новую проблему в github, в которой говорится, что общедоступный облачный сервер peerjs теперь нестабилен или работает неправильно. Просто выдает ошибку вида: Firefox не может установить соединение с сервером по адресу wss://0.peerjs.com/peerjs?key=peerjs&id=123222589562487856955685485555&token=ocyxworx62i, а в Chrome: Ошибка при установлении соединения: net::ERR_CONNECTION_REFUSED. Подробнее см. здесь. Итак, лучше использовать свой собственный сервер (см. следующий подход).
Альтернативный подход-2 (с использованием собственного сервера peerjs):
Вы можете разместить свой собственный сервер peerjs вместо PEERJS CLOUD SERVER. Таким образом, вы можете разрешить доступ к любому / любому веб-сайту, который вы хотите. Если вы хотите узнать, как разместить сервер peerjs, посетите здесь.
[P.S.]: я изучил вопросы pearjs на github. После прочтения всех этих вопросов кажется, что лучше использовать свой собственный сервер, чем использовать облако pearjs. С каждым новым релизом peerjs возникает множество различных проблем. И в основном это связано с соединением с облаком peerjs, а также облаком peerjs, я думаю, не стабильно. Раньше они размещали его на 0.peerjs.com:9000 (небезопасно). Но теперь в 0.peerjs.com:443.
Раньше я не использовал peerjs и не устанавливал сервер peerjs. Если вы хотите настроить его, я надеюсь, что сообщество сможет помочь вам в том, как это сделать правильно.
person
reyad
schedule
28.07.2020