forum.beginner.center/:1 Mixed Content: Die Seite unter 'https://forum.beginner.center/' wurde über HTTPS geladen, hat aber eine unsichere Schriftart 'http://forum.beginner.center/fonts/JetBrainsMono-Regular.woff2?v=0.0.19' angefordert. Diese Anfrage wurde blockiert; der Inhalt muss über HTTPS bereitgestellt werden.
forum.beginner.center/:1 Mixed Content: Die Seite unter 'https://forum.beginner.center/' wurde über HTTPS geladen, hat aber eine unsichere Schriftart 'http://forum.beginner.center/fonts/JetBrainsMono-Bold.woff2?v=0.0.19' angefordert. Diese Anfrage wurde blockiert; der Inhalt muss über HTTPS bereitgestellt werden.
app.js:270 ℹ️ Discourse v3.5.0.beta9-dev — https://github.com/discourse/discourse/commits/33dfd7dba9 — Ember v5.12.0
[Nur melden] Weigerte sich, eine Zeichenfolge als JavaScript auszuwerten, da 'unsafe-eval' keine zulässige Quelle für Skripte in der folgenden Content Security Policy-Direktive ist: „script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'“.
[Nur melden] Weigerte sich, eine Zeichenfolge als JavaScript auszuwerten, da 'unsafe-eval' keine zulässige Quelle für Skripte in der folgenden Content Security Policy-Direktive ist: „script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'“.
[Nur melden] Weigerte sich, eine Zeichenfolge als JavaScript auszuwerten, da 'unsafe-eval' keine zulässige Quelle für Skripte in der folgenden Content Security Policy-Direktive ist: „script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'“.
[Nur melden] Weigerte sich, eine Zeichenfolge als JavaScript auszuwerten, da 'unsafe-eval' keine zulässige Quelle für Skripte in der folgenden Content Security Policy-Direktive ist: „script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'“.
[Nur melden] Weigerte sich, eine Zeichenfolge als JavaScript auszuwerten, da 'unsafe-eval' keine zulässige Quelle für Skripte in der folgenden Content Security Policy-Direktive ist: „script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'“.
[Nur melden] Weigerte sich, eine Zeichenfolge als JavaScript auszuwerten, da 'unsafe-eval' keine zulässige Quelle für Skripte in der folgenden Content Security Policy-Direktive ist: „script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'“.
[Nur melden] Weigerte sich, eine Zeichenfolge als JavaScript auszuwerten, da 'unsafe-eval' keine zulässige Quelle für Skripte in der folgenden Content Security Policy-Direktive ist: „script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'“.
[Nur melden] Weigerte sich, eine Zeichenfolge als JavaScript auszuwerten, da 'unsafe-eval' keine zulässige Quelle für Skripte in der folgenden Content Security Policy-Direktive ist: „script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'“.
[Nur melden] Weigerte sich, eine Zeichenfolge als JavaScript auszuwerten, da 'unsafe-eval' keine zulässige Quelle für Skripte in der folgenden Content Security Policy-Direktive ist: „script-src 'nonce-4YvvTZffYuqGaENC8DnQ7yeNg' 'strict-dynamic'“.
analytics.eu.umami.is/script.js:1 Fehler beim Laden der Ressource: net::ERR_CONNECTION_CLOSED
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
Tracking Prevention blockierte den Zugriff auf den Speicher für <URL>.
deprecated.js:62 Hinweis zur Veralterung: Das Festlegen der Zeitzoneneigenschaft des Benutzerobjekts ist veraltet. Verwenden Sie stattdessen das user_option-Objekt [veraltet seit Discourse 2.9.0.beta12] [Entfernung in Discourse 3.0.0.beta1] [Veraltung-ID: discourse.user.userOptions]
a @ deprecated.js:62
security:1 Die Autofokus-Verarbeitung wurde blockiert, da ein Dokument bereits ein fokussiertes Element hat.
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 (Nicht autorisiert)
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
Oh, hmm, das ist nützlich, aber 401er können aus den unterschiedlichsten Gründen ausgelöst werden. Ich werde das mit unserem zuständigen Passkeys-Experten klären.
Stellen Sie sicher, dass Ihre Website so konfiguriert ist, dass alles über HTTPS bereitgestellt wird. Die Überprüfung der Passkey-Herausforderung erfordert, dass alle Anfragen über HTTPS erfolgen. Außerdem muss die Domain zwischen Browser und Server exakt übereinstimmen. Wenn es irgendwo eine Diskrepanz gibt, schlägt die Überprüfung fehl.
Wir haben dafür eine Einstellung, force_https, die Sie ausprobieren können. Dies kann helfen (seien Sie jedoch vorsichtig, es kann Sie auch aussperren, wenn der Server nicht richtig konfiguriert ist).
Entschuldigen Sie die Verzögerung. Das Problem hängt tatsächlich mit Ihrem Proxy zusammen. Ich kann nicht genau sagen, was es ist, aber einer der Domainnamen, das Protokoll (http oder https) und der Port sind im Weg.
Passkeys überprüfen, ob das Frontend und das Backend auf derselben Domain, demselben Protokoll und demselben Port laufen. Wenn hier eine Nichtübereinstimmung vorliegt, erhalten Sie eine Fehlermeldung wie diese.
Können Sie im Rails CLI Folgendes versuchen:
DiscourseWebauthn.origin
und es mit der URL vergleichen, die Sie verwenden, um auf die Website im Browser zuzugreifen? Die beiden sollten übereinstimmen.
Nach meinem Verständnis des Webauthn-Standards für Passkeys beruht dieser auf einer sicheren Verbindung zwischen der Relying Party (Discourse) und dem Client (Browser oder Mobilgerät) sowie dem Authenticator (z. B. einem Yubikey). Daher benötigen wir https für die Kommunikation, die von der Discourse-Anwendung ausgeht. Das Erzwingen von https mag die Lösung sein, aber auch nur ein Header für
proxy_set_header X-Forwarded-Proto https;
könnte ausreichen. Wenn das Erzwingen von https hilft (was ohnehin empfohlen wird), ist alles in Ordnung.