Asp.net核心cloudflare ssl被封锁的混合内容使用unobtrusive-ajax

问题描述:

我最近设置了一个使用cloudflare免费ssl的网站。当使用ajax调用分页时,我得到一个混合的内容错误,我假设它是通过http传输的!我尝试在这里使用https重定向的指令:https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl 但是,这只是最后一个循环,给出了太多的重定向错误。Asp.net核心cloudflare ssl被封锁的混合内容使用unobtrusive-ajax

这是关于混合内容的具体错误:

混合内容:在 页“https://www.andysmobilearchery.co.uk/events/”装载了HTTPS, 但要求一个不安全的XMLHttpRequest端点 “http://www.andysmobilearchery.co.uk/events/index/?page=2&x-requested-with=xmlhttprequest&=1502287619453”。 此请求已被阻止;内容必须通过HTTPS提供。

有没有解决这个问题,或者我将不得不删除ajax功能?

任何帮助表示赞赏!

@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> 
} 

我现在已经注意到了其他网站,我有这样的实施工作就好了(3人!),我使用asp.net样板增加了一个尾部斜杠的URL,如果我禁用此活动页面作品,但我的评论页停止...我感到莫名其妙lol

+0

该消息中的案例的具体修复只是为了使代码执行XHR呼叫到'https://www.andysmobilearchery.co.uk/events/_index/?page=2&x-requested-with=xmlhttprequest&_ = 1502287619453'而不是(也就是说,'https'作为协议部分而不是'http')。有什么可以阻止吗? – sideshowbarker

+0

我使用不显眼的ajax,我不知道该协议的设置。我将编辑我的问题以显示我的cshtml /剃须刀 –

所以我找到了答案,种。

在我的应用我有路由选项添加斜线:

.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; 
     }) 

我发现禁用这个工作,但是我并不满足给定的,这个问题不会对我的其他网站出现。最后,我从一个可以解决问题的工作站点复制startup.cs,唯一的区别是我可以找到的是,破损的站点使用部分类来启动,并且在构成启动其余部分的文件中唯一的区别是Cors方法,我不需要Cors,所以我不知道为什么它在那里,仍然不应该打破它。自从我开始工作以来,它将不得不保持一段时间。我将要做的是在稍后的日子里对应用进行一点点重构;如果我记得我会在这里更新任何调查结果。