mirror of
https://github.com/R0m1k3/PleinR.git
synced 2026-10-22 06:38:05 +02:00
Cliquer sur « Connecter » sans avoir enregistré l'URL publique du site renvoyait une erreur, et la redirection retombait sur https://0.0.0.0 : la directive upgrade-insecure-requests était posée même sur une page servie en HTTP, le navigateur basculait donc la navigation vers un https:// inexistant. - `publicBaseUrl()` : réglage `site_public_url`, variables d'environnement, puis origine de la requête (X-Forwarded-Host / X-Forwarded-Proto). L'adresse de retour OAuth et le lien des publications l'utilisent ; `seo-server` s'appuie dessus au lieu de dupliquer la déduction. - `src/lib/site-url.ts` : déduction pure et testée de l'origine, HTTP par défaut pour localhost et les IP nues, HTTPS pour un nom de domaine. - Middleware : `upgrade-insecure-requests` uniquement quand la page est servie en HTTPS. - Page Réseaux : l'adresse détectée est annoncée comme valeur par défaut, avec le rappel que Facebook et LinkedIn exigent du HTTPS sur un domaine. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QXNXRC4j5VLfKvpyyisrnb
22 lines
688 B
TypeScript
22 lines
688 B
TypeScript
import { publicBaseUrl } from "@/lib/social-accounts";
|
||
|
||
/**
|
||
* URL publique du site pour le référencement (canoniques, sitemap, JSON-LD).
|
||
*
|
||
* Priorité au réglage `site_public_url` (Backend › Réseaux sociaux) puis aux
|
||
* variables d'environnement ; en dernier recours, l'URL est déduite des
|
||
* en-têtes de la requête (reverse proxy compris). Voir `publicBaseUrl()`.
|
||
*/
|
||
export { publicBaseUrl };
|
||
|
||
/** `metadataBase` pour Next : indéfini si aucune URL n'est connue. */
|
||
export async function metadataBase(): Promise<URL | undefined> {
|
||
const base = await publicBaseUrl();
|
||
if (!base) return undefined;
|
||
try {
|
||
return new URL(base);
|
||
} catch {
|
||
return undefined;
|
||
}
|
||
}
|