forum.beginner.center/:1 Contenido mixto: La página en 'https://forum.beginner.center/' se cargó a través de HTTPS, pero solicitó una fuente insegura 'http://forum.beginner.center/fonts/JetBrainsMono-Regular.woff2?v=0.0.19'. Esta solicitud ha sido bloqueada; el contenido debe servirse a través de HTTPS.
forum.beginner.center/:1 Contenido mixto: La página en 'https://forum.beginner.center/' se cargó a través de HTTPS, pero solicitó una fuente insegura 'http://forum.beginner.center/fonts/JetBrainsMono-Bold.woff2?v=0.0.19'. Esta solicitud ha sido bloqueada; el contenido debe servirse a través de HTTPS.
app.js:270 ℹ️ Discourse v3.5.0.beta9-dev — https://github.com/discourse/discourse/commits/33dfd7dba9 — Ember v5.12.0
[Solo informe] Se denegó la evaluación de una cadena como JavaScript porque 'unsafe-eval' no es una fuente permitida de scripts en la siguiente directiva de Política de Seguridad de Contenido: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Solo informe] Se denegó la evaluación de una cadena como JavaScript porque 'unsafe-eval' no es una fuente permitida de scripts en la siguiente directiva de Política de Seguridad de Contenido: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Solo informe] Se denegó la evaluación de una cadena como JavaScript porque 'unsafe-eval' no es una fuente permitida de scripts en la siguiente directiva de Política de Seguridad de Contenido: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Solo informe] Se denegó la evaluación de una cadena como JavaScript porque 'unsafe-eval' no es una fuente permitida de scripts en la siguiente directiva de Política de Seguridad de Contenido: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Solo informe] Se denegó la evaluación de una cadena como JavaScript porque 'unsafe-eval' no es una fuente permitida de scripts en la siguiente directiva de Política de Seguridad de Contenido: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Solo informe] Se denegó la evaluación de una cadena como JavaScript porque 'unsafe-eval' no es una fuente permitida de scripts en la siguiente directiva de Política de Seguridad de Contenido: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Solo informe] Se denegó la evaluación de una cadena como JavaScript porque 'unsafe-eval' no es una fuente permitida de scripts en la siguiente directiva de Política de Seguridad de Contenido: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Solo informe] Se denegó la evaluación de una cadena como JavaScript porque 'unsafe-eval' no es una fuente permitida de scripts en la siguiente directiva de Política de Seguridad de Contenido: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
[Solo informe] Se denegó la evaluación de una cadena como JavaScript porque 'unsafe-eval' no es una fuente permitida de scripts en la siguiente directiva de Política de Seguridad de Contenido: "script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'".
analytics.eu.umami.is/script.js:1 Error al cargar el recurso: net::ERR_CONNECTION_CLOSED
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
La prevención de seguimiento bloqueó el acceso al almacenamiento para <URL>.
deprecated.js:62 Aviso de depreciación: Establecer la propiedad timezone del objeto user está obsoleto. Utilice el objeto user_option en su lugar [obsoleto desde Discourse 2.9.0.beta12] [eliminación en Discourse 3.0.0.beta1] [id de depreciación: discourse.user.userOptions]
a @ deprecated.js:62
security:1 El procesamiento de Autofocus fue bloqueado porque un documento ya tiene un elemento enfocado.
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 (No autorizado)
send @ jquery.js:9940
ajax @ jquery.js:9521
o @ ajax.js:188
(anonymous) @ 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
(anonymous) @ index.js:250
submit @ confirm-session.gjs:84
await in submit
(anonymous) @ 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
(anonymous) @ index.js:250
submit @ confirm-session.gjs:84
await in submit
(anonymous) @ 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
¿Puede asegurarse de que su sitio esté configurado para servir todo en https? La verificación del desafío de la clave de acceso requiere que todas las solicitudes pasen por https. Además, el dominio entre el navegador y el servidor debe coincidir exactamente. Si hay una discrepancia en algún lugar, la verificación fallará.
Tenemos una configuración para esto, force_https, puede probarla, puede ayudar (aunque tenga cuidado, también podría bloquearlo si el servidor no está configurado correctamente).
Disculpe la demora. El problema aquí está efectivamente relacionado con su proxy. No puedo decir exactamente qué es, pero uno de los nombres de dominio, el protocolo (http o https) y el puerto están interfiriendo.
Las Passkeys verifican que el frontend y el backend se ejecuten en el mismo dominio, protocolo y puerto. Si hay una discrepancia en alguno de estos, obtendrá un error como este.
En la CLI de Rails, ¿puede intentar esto:
DiscourseWebauthn.origin
y compararlo con la URL que usa para acceder al sitio en el navegador? Los dos deberían coincidir.
Según entiendo el Estándar Webauthn para Passkey, este se basa en una conexión segura entre la Parte Confiable (Discourse) y el Cliente (Navegador o dispositivo móvil) y el Autenticador (por ejemplo, una yubikey). Por lo tanto, necesitamos https para la comunicación que proviene de la aplicación Discourse. Forzar https puede ser la solución, pero un encabezado para
proxy_set_header X-Forwarded-Proto https;
también podría ser suficiente. Si forzar https ayuda (lo cual se recomienda de todos modos), todo estará bien.