forum.beginner.center/:1 Смешанный контент: страница по адресу 'https://forum.beginner.center/' была загружена через HTTPS, но запросила небезопасный шрифт 'http://forum.beginner.center/fonts/JetBrainsMono-Regular.woff2?v=0.0.19'. Этот запрос был заблокирован; контент должен предоставляться через HTTPS.
forum.beginner.center/:1 Смешанный контент: страница по адресу 'https://forum.beginner.center/' была загружена через HTTPS, но запросила небезопасный шрифт 'http://forum.beginner.center/fonts/JetBrainsMono-Bold.woff2?v=0.0.19'. Этот запрос был заблокирован; контент должен предоставляться через HTTPS.
app.js:270 ℹ️ Discourse v3.5.0.beta9-dev — https://github.com/discourse/discourse/commits/33dfd7dba9 — Ember v5.12.0
[Только отчёт] Отказано в оценке строки как JavaScript, поскольку 'unsafe-eval' не является разрешённым источником скрипта в следующей директиве политики безопасности контента: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Только отчёт] Отказано в оценке строки как JavaScript, поскольку 'unsafe-eval' не является разрешённым источником скрипта в следующей директиве политики безопасности контента: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Только отчёт] Отказано в оценке строки как JavaScript, поскольку 'unsafe-eval' не является разрешённым источником скрипта в следующей директиве политики безопасности контента: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Только отчёт] Отказано в оценке строки как JavaScript, поскольку 'unsafe-eval' не является разрешённым источником скрипта в следующей директиве политики безопасности контента: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Только отчёт] Отказано в оценке строки как JavaScript, поскольку 'unsafe-eval' не является разрешённым источником скрипта в следующей директиве политики безопасности контента: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Только отчёт] Отказано в оценке строки как JavaScript, поскольку 'unsafe-eval' не является разрешённым источником скрипта в следующей директиве политики безопасности контента: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Только отчёт] Отказано в оценке строки как JavaScript, поскольку 'unsafe-eval' не является разрешённым источником скрипта в следующей директиве политики безопасности контента: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Только отчёт] Отказано в оценке строки как JavaScript, поскольку 'unsafe-eval' не является разрешённым источником скрипта в следующей директиве политики безопасности контента: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Только отчёт] Отказано в оценке строки как JavaScript, поскольку 'unsafe-eval' не является разрешённым источником скрипта в следующей директиве политики безопасности контента: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
analytics.eu.umami.is/script.js:1 Не удалось загрузить ресурс: net::ERR_CONNECTION_CLOSED
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
Предотвращение отслеживания заблокировало доступ к хранилищу для <URL>.
deprecated.js:62 Уведомление о устаревании: Установка свойства timezone объекта пользователя устарела. Используйте объект user_option вместо этого [устарело с версии Discourse 2.9.0.beta12] [удаление в версии Discourse 3.0.0.beta1] [идентификатор устаревания: discourse.user.userOptions]
a @ deprecated.js:62
security:1 Обработка autofocus была заблокирована, поскольку в документе уже есть фокусированный элемент.
completion_list.html:14 GET chrome-extension://mfbcdcnpokpoajjciilocoachedjkima/heuristicsRedefinitions.js net::ERR_FILE_NOT_FOUND
completion_list.html:13 GET chrome-extension://mfbcdcnpokpoajjciilocoachedjkima/extensionState.js net::ERR_FILE_NOT_FOUND
completion_list.html:12 GET chrome-extension://mfbcdcnpokpoajjciilocoachedjkima/utils.js net::ERR_FILE_NOT_FOUND
ajax.js:188 POST https://forum.beginner.center/u/register_passkey.json 401 (Unauthorized)
send @ jquery.js:9940
ajax @ jquery.js:9521
o @ ajax.js:188
(аноним) @ rsvp-DaQAFb0W.js:435
e @ rsvp-DaQAFb0W.js:451
A @ ajax.js:201
registerPasskey @ user.js:650
createPasskey @ user-passkeys.gjs:86
await in createPasskey
didConfirm @ user-passkeys.gjs:140
didConfirmWrapped @ dialog.js:134
_join @ index.js:788
join @ index.js:605
p @ index.js:152
(аноним) @ index.js:250
submit @ confirm-session.gjs:84
await in submit
(аноним) @ d-button.gjs:138
invoke @ index.js:264
flush @ index.js:180
flush @ index.js:334
_end @ index.js:762
end @ index.js:565
_runExpiredTimers @ index.js:869
setTimeout
setTimeout @ index.js:39
_installTimerTimeout @ index.js:912
_later @ index.js:823
later @ index.js:652
T @ index.js:562
_triggerAction @ d-button.gjs:135
click @ d-button.gjs:93
user-passkeys.gjs:104 {jqXHR: {…}, textStatus: 'error', errorThrown: ''}errorThrown: ""jqXHR: abort: ƒ (e)always: ƒ ()catch: ƒ (e)done: ƒ ()fail: ƒ ()getAllResponseHeaders: ƒ ()getResponseHeader: ƒ (e)jqTextStatus: "error"overrideMimeType: ƒ (e)pipe: ƒ ()progress: ƒ ()promise: ƒ (e)readyState: 4requestedUrl: "/u/register_passkey.json"responseJSON: {errors: Array(1)}responseText: "{\"errors\":[\"The origin of the authentication request does not match the server origin.\"]}"setRequestHeader: ƒ (e,t)state: ƒ ()status: 401statusCode: ƒ (e)statusText: "error"then: ƒ (e,i,n)[[Prototype]]: ObjecttextStatus: "error"[[Prototype]]: Objectconstructor: ƒ Object()hasOwnProperty: ƒ hasOwnProperty()isPrototypeOf: ƒ isPrototypeOf()propertyIsEnumerable: ƒ propertyIsEnumerable()toLocaleString: ƒ toLocaleString()toString: ƒ toString()valueOf: ƒ valueOf()__defineGetter__: ƒ __defineGetter__()__defineSetter__: ƒ __defineSetter__()__lookupGetter__: ƒ __lookupGetter__()__lookupSetter__: ƒ __lookupSetter__()__proto__: (...)get __proto__: ƒ __proto__()set __proto__: ƒ __proto__()
createPasskey @ user-passkeys.gjs:104
await in createPasskey
didConfirm @ user-passkeys.gjs:140
didConfirmWrapped @ dialog.js:134
_join @ index.js:788
join @ index.js:605
p @ index.js:152
(аноним) @ index.js:250
submit @ confirm-session.gjs:84
await in submit
(аноним) @ d-button.gjs:138
invoke @ index.js:264
flush @ index.js:180
flush @ index.js:334
_end @ index.js:762
end @ index.js:565
_runExpiredTimers @ index.js:869
setTimeout
setTimeout @ index.js:39
_installTimerTimeout @ index.js:912
_later @ index.js:823
later @ index.js:652
T @ index.js:562
_triggerAction @ d-button.gjs:135
click @ d-button.gjs:93
Убедитесь, что ваш сайт настроен на обслуживание всего трафика через HTTPS. Проверка вызова ключа доступа требует, чтобы все запросы отправлялись через HTTPS. Кроме того, домен между браузером и сервером должен точно совпадать. Если где-то есть несоответствие, проверка не пройдет.
У нас есть настройка force_https, вы можете попробовать её — это может помочь (однако будьте осторожны: если сервер настроен неправильно, это может заблокировать вам доступ).
Извините за задержку. Проблема здесь действительно связана с вашим прокси-сервером. Я не могу точно сказать, в чём дело, но что-то мешает: либо доменное имя, либо протокол (http или https), либо порт.
Passkeys проверяют, что фронтенд и бэкенд работают на одном домене, протоколе и порту. Если хотя бы один из этих параметров не совпадает, вы получите ошибку вроде этой.
В консоли Rails попробуйте выполнить:
DiscourseWebauthn.origin
и сравните результат с URL, который вы используете для доступа к сайту в браузере. Они должны совпадать.
Насколько я понимаю, стандарт WebAuthn для passkey предполагает безопасное соединение между доверяющей стороной (Discourse), клиентом (браузер или мобильное устройство) и аутентификатором (например, YubiKey). Следовательно, для связи от приложения Discourse требуется использование HTTPS. Принудительное включение HTTPS может стать решением, но, возможно, достаточно будет просто заголовка:
proxy_set_header X-Forwarded-Proto https;
Если принудительное включение HTTPS помогает (что, в любом случае, рекомендуется), то всё в порядке.