Request.Url.Scheme donne http au lieu de https sur le site à charge équilibrée
Je suis en train de tester un nouveau site de test d'équilibrage de charge et le https est mis en place à l'équilibrage de la charge de niveau, pas au niveau du site. Aussi, ce site sera toujours en https, donc je n'ai pas besoin de télécommande exiger https attributs etc. L'url s'affiche https, mais il n'est pas disponible dans mon code. J'ai quelques questions pour cette raison
Demande.Url.Le schéma est toujours http:
public static string GetProtocol()
{
var protocol = "http";
if (HttpContext.Current != null && HttpContext.Current.Request != null)
{
protocol = HttpContext.Current.Request.Url.Scheme;
}
return protocol;
}
Même chose avec cette url de base, le protocole est http
public static string GetBaseUrl()
{
var baseUrl = String.Empty;
if (HttpContext.Current == null || HttpContext.Current.Request == null || String.IsNullOrWhiteSpace(HttpRuntime.AppDomainAppPath)) return baseUrl;
var request = HttpContext.Current.Request;
var appUrl = HttpRuntime.AppDomainAppVirtualPath;
baseUrl = string.Format("{0}://{1}{2}", request.Url.Scheme, request.Url.Authority, appUrl);
if (!string.IsNullOrWhiteSpace(baseUrl) && !baseUrl.EndsWith("/"))
baseUrl = String.Format("{0}/", baseUrl);
return baseUrl;
}
Maintenant le plus gros problème est de référencement des fichiers js et google polices référencées dans les feuilles de style. Je suis l'aide de //ici sans http ou https, mais elles sont considérées comme http et je vois un contenu mixte message bloqué dans FireBug.
Comment puis-je résoudre ce problème?
source d'informationauteur learning...
Vous devez vous connecter pour publier un commentaire.
Comme vous l'avez dit HTTPS résiliation est effectuée à l'équilibrage de la charge de niveau ("https est mis en place à l'équilibrage de la charge de niveau"), ce qui signifie système d'origine peut pas venir sur le site en fonction de loadbalancer de configuration.
Il ressemble dans votre cas LB est configuré pour parler du site sur HTTP tout le temps. Si votre site ne sera jamais voir schéma original sur
HttpContext.Request.RawUrl
(ou des propriétés similaires).Correctif: habituellement, lorsque LB, proxy ou CA configuré de telle façon qu'il y sont des en-têtes supplémentaires qui précisent système d'origine et, probablement, d'autres entrant les paramètres de la demande comme de l'intégralité de l'url, IP du client qui ne sera pas directement visible pour le site derrière le proxy de l'appareil.
Je sais que c'est une vieille question, mais après avoir rencontré le même problème, je n'ai découvert que si je regarde dans le UrlReferrer propriété de la
HttpRequest
objet, les valeurs reflètent ce qui a été fait au client dans la barre d'adresse du navigateur.Ainsi, par exemple, avec
UrlReferrer
j'ai eu:Mais pour la même demande, avec la
Url
bien j'ai eu la suivante:Selon https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer
Dans Asp.Net de Base, j'ai trouvé ( je ne sais pas si cela fonctionne pour tous les scénarios) que même si la demande de la.Le schéma est trompeusement affiche “http” original “https”, demande.IsHttps la propriété est plus fiable.
Je suis en utilisant le code suivant