0

J'ai récemment mis en place un site Web qui utilise cloudflare libre ssl. Lorsque j'utilise des appels ajax pour la pagination, je reçois une erreur de contenu mixte, je suppose parce qu'il est encore à un moment donné transmis sur http!? J'ai essayé d'utiliser les instructions pour la redirection https ici: https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl mais cela a juste fini dans une boucle, donnant l'erreur trop de redirections.Asp.net core cloudflare ssl Bloqué Contenu mélangé utilisant discret-ajax

Ceci est l'erreur spécifique relative au contenu mixte:

Contenu mixte: La page à 'https://www.andysmobilearchery.co.uk/events/' a été chargé via HTTPS, mais a demandé un point final XMLHttpRequest insécurité 'http://www.andysmobilearchery.co.uk/events/index/?page=2&x-requested-with=xmlhttprequest&=1502287619453'. Cette demande a été bloquée; le contenu doit être servi via HTTPS.

Y at-il un correctif pour cela, ou vais-je devoir supprimer les fonctions ajax?

Toute aide est appréciée!

@if (Model.Pager.EndPage > 1) 
{ 
    <ul class="pagination"> 
     @if (Model.Pager.CurrentPage > 1) 
     { 
      <li> 
       <a asp-controller="Events" asp-action="_Index" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#paged-content" asp-route-page="1" data-ajax-method="GET" asp-route-dfrom="@ViewBag.dfrom" asp-route-dto="@ViewBag.dto" asp-route-search="@ViewBag.search">First</a> 
      </li> 
       <li> 
        <a asp-controller="Events" asp-action="_Index" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#paged-content" data-ajax-method="GET" asp-route-page="@(Model.Pager.CurrentPage - 1)" asp-route-dfrom="@ViewBag.dfrom" asp-route-dto="@ViewBag.dto" asp-route-search="@ViewBag.search">Previous</a> 
       </li> 
     } 

     @for (var page = Model.Pager.StartPage; page <= Model.Pager.EndPage; page++) 
     { 
      <li class="@(page == Model.Pager.CurrentPage ? "active" : "")"> 
       <a asp-controller="Events"asp-action="_Index" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#paged-content" data-ajax-method="GET" asp-route-page="@page" asp-route-dfrom="@ViewBag.dfrom" asp-route-dto="@ViewBag.dto" asp-route-search="@ViewBag.search">@page</a> 
      </li>} 

     @if (Model.Pager.CurrentPage < Model.Pager.TotalPages) 
     { 
      <li> 
       <a asp-controller="Events" asp-action="_Index" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#paged-content" data-ajax-method="GET" asp-route-page="@(Model.Pager.CurrentPage + 1)" asp-route-dfrom="@ViewBag.dfrom" asp-route-dto="@ViewBag.dto" asp-route-search="@ViewBag.search">Next</a> 
      </li> 
       <li> 
        <a asp-controller="Events" asp-action="_Index" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#paged-content" data-ajax-method="GET" asp-route-page="@(Model.Pager.TotalPages)" asp-route-dfrom="@ViewBag.dfrom" asp-route-dto="@ViewBag.dto" asp-route-search="@ViewBag.search">Last</a> 
       </li> 
     } 
    </ul> 
} 

J'ai maintenant remarqué que d'autres sites où j'ai ce travail mis en œuvre très bien (3 autres!), Je me sers boilerplate de asp.net qui ajoute une barre oblique à urls, si je désactive cette page d'événements fonctionne, mais ma page de commentaires s'arrête ... Je suis déconcerté lol

+0

Le correctif spécifique pour le cas dans ce message est juste pour que le code fasse un appel XHR à 'https://www.andysmobilearch.co.uk/events/_index/?page=2&x-requested-with=xmlhttprequest&_ = 1502287619453' à la place (c'est-à-dire avec 'https' comme partie de protocole au lieu de juste' http'). Y at-il quelque chose qui empêche cela? – sideshowbarker

+0

J'utilise ajax discrète, je ne suis pas au courant d'un paramètre pour le protocole. Je vais modifier ma question pour montrer mon cshtml/rasoir –

Répondre

1

J'ai donc trouvé la réponse, en quelque sorte.

Dans mon application, j'ai eu l'option de routage pour ajouter le slash:

.AddRouting(
     options => 
     { 
       // Improve SEO by stopping duplicate URL's due to case differences or trailing slashes. 
       // See http://googlewebmastercentral.blogspot.co.uk/2010/04/to-slash-or-not-to-slash.html 
       // All generated URL's should append a trailing slash. 
       options.AppendTrailingSlash = true; 
       // All generated URL's should be lower-case. 
       options.LowercaseUrls = true; 
     }) 

Je trouve que la désactivation de cela a fonctionné, mais je n'étais pas contenu étant donné que cette question ne se pose pas sur mes autres sites . A la fin j'ai copié le startup.cs d'un site de travail, qui a corrigé le problème, la seule différence que je peux trouver est que le site cassé utilise une classe partielle pour le démarrage et dans les fichiers qui composent le reste du début la seule différence était une méthode cors, je n'ai pas besoin de cors donc je ne sais pas pourquoi c'était là, mais ça ne devrait pas l'avoir cassé. Ça va devoir rester un mystère pendant un moment puisque je l'ai fonctionné. Ce que je vais faire, c'est reconvertir l'application petit à petit à une date ultérieure; si je me souviens, je vais mettre à jour ici avec des conclusions.